IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

CRUD Android SDK / SQLite / Java : update()


Sujet :

Android

  1. #1
    Membre à l'essai
    Femme Profil pro
    Développeur Web
    Inscrit en
    Juin 2014
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2014
    Messages : 18
    Points : 15
    Points
    15
    Par défaut CRUD Android SDK / SQLite / Java : update()
    Bonjour,
    Je suis débutante et j'aurai besoin d'aide pour la méthode update.
    J'ai créé ma base de données, j'arrive à faire le insert et le delete mais j'ai des soucis avec le update.
    Côté Dao, voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public void sqlModifFrais(FraisForfait frais, String selected_ID){
     
    		ContentValues values = new ContentValues();
    		values.put(C_DATE, frais.getDate());
    		values.put(C_IDFRAISFORFAIT, frais.getIdFraisForfait());
    		values.put(C_QUANTITE,frais.getQuantite());
     
    		// Appeler la méthode modifier de SQLiteOpenHelper et fermer la base de données
    		// performing task
    		db = getWritableDatabase();
    		db.update(TABLE_FF, values, C_ID + "=?", new String[] { selected_ID });
    		db.close();
    	}
    Mais je ne sais pas comment l'exploiter du côté activity.
    J'ai créer mon bouton avec la fonction onClick.
    Je dois pouvoir sélectionner ma ligne dans ma liste view et modifier les informations.
    J'espère que quelqu'un pourra m'aider.
    Merci d'avance.

  2. #2
    Membre actif Avatar de Altak
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2014
    Messages
    170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2014
    Messages : 170
    Points : 245
    Points
    245
    Par défaut
    Bonjour,

    Je ne comprend pas ton probleme, soit plus précis et moins brouillon s'il te plait.

    Tu dis que tu n'arrive pas a l'exploiter dans ton activity...
    Tu n'arrive pas a récupérer les info dont tu as besoin?
    Tu ne sait pas comment accéder a la fonction?
    Ta fonction s'effectue correctement?

    On a besoin de plus de détails, du genre comment tu instancie ta classe qui gère ta db, etc...
    Tu nous met juste une fonction avec une courte explication de ton probleme, c'est difficile de trouver une solution avec ce qu'on a la...

    GLHF

  3. #3
    Membre à l'essai
    Femme Profil pro
    Développeur Web
    Inscrit en
    Juin 2014
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2014
    Messages : 18
    Points : 15
    Points
    15
    Par défaut
    Bonjour,
    Désolée de ne pas avoir été plus précise :

    1) J'ai créé une classe Dao qui hérite de la classe SQLiteOpenHelper, c'est de là que j'ai pris le morceau de code plus haut :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileWriter;
    import java.text.SimpleDateFormat;
    import java.util.ArrayList;
    import java.util.Calendar;
    import java.util.Date;
    import java.util.List;
    
    import org.apache.http.HttpResponse;
    import org.apache.http.client.HttpClient;
    import org.apache.http.client.methods.HttpPost;
    import org.apache.http.entity.InputStreamEntity;
    import org.apache.http.impl.client.DefaultHttpClient;
    
    
    
    
    import android.content.ContentValues;
    import android.content.Context;
    import android.database.Cursor;
    import android.database.sqlite.SQLiteConstraintException;
    import android.database.sqlite.SQLiteDatabase;
    import android.database.sqlite.SQLiteDatabase.CursorFactory;
    import android.database.sqlite.SQLiteOpenHelper;
    import android.graphics.Bitmap.Config;
    import android.os.Environment;
    import android.text.format.DateFormat;
    import android.util.Log;
    import android.view.View;
    
    //Définition de la classe Dao qui permettra de créer la base de données ainsi que la table qui contiendra les contacts.
    //
    //Cette classe héritera de SQLiteOpenHelper et qui devra implémenter 2 méthodes :
    //
    //    onCreate() qui est appelée à la toute première création de la base de données.
    //    onUpgrade() qui est appelée lors de l’upgrade de la base
    
    public class Dao  extends SQLiteOpenHelper {
        
        
        static final String DATABASE = "gsb.db";
        static final int VERSION = 1;
        
        // Table visiteur
        
         static final String TABLE_VISITEUR = "visiteur";	
    	 static final String C_MAT = "mat";
    	 static final String C_NOM = "nom";
    	 static final String C_PWD = "pwd";
    		
    	
    	
    	// Table fraisforfait
    	
    	 static final String TABLE_FF = "fraisforfait";	
    	 
    	static final String C_ID = "_id";
    	static final String C_DATE = "date";
    	static final String C_IDFRAISFORFAIT = "idFraisForfait";
    	static final String C_QUANTITE = "quantite";
    	
    	
    	
    	
    	SQLiteDatabase db;
    	String sql;
    	Cursor c;
    	
    	
    // Constructeur
         public Dao(Context context) {
    		
    		super(context, DATABASE, null, VERSION);
    	}
    
    //     
    //      la methode onCreate est appelée lors de la toute première création de la base
    //      de données -> création des tables visiteurs, frais au forfait
    //      
        @Override
        public void onCreate(SQLiteDatabase db) {
        	
    	// Creation de la table visiteur
    	db.execSQL("CREATE TABLE   " + TABLE_VISITEUR + " ( " + C_MAT
    			+ " TEXT, " + C_NOM + " TEXT, "
    			+ C_PWD + " TEXT)");
    	
    	// Creation de la table fraisforfait
    	
    	db.execSQL("CREATE TABLE   " + TABLE_FF + " ( " + C_ID
    				+ " INTEGER PRIMARY KEY AUTOINCREMENT, " + C_MAT
    			+ " TEXT, " + C_DATE + " TEXT, "
    			+ C_IDFRAISFORFAIT + " TEXT," + C_QUANTITE + " INT)");
    	
    }
    
        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    
    	// Destruction d'une éventuelle ancienne version de la table
        	
    	db.execSQL("Drop table " + TABLE_VISITEUR);
    	
    	
    	db.execSQL("Drop table " + TABLE_FF);
    
    	//Creation de la nouvelle version de la table
    	onCreate(db);
    	
    	
    }
        // Insertion des valeurs relatives au visiteur dans la table visiteur: nom, matricule et mdp
        public void sqlInsererVisiteur (Visiteur visiteur) {
    
    	ContentValues values = new ContentValues();
    	
    	values.put(C_MAT, visiteur.getNum());
    	values.put(C_NOM, visiteur.getNom());
    	values.put(C_PWD, visiteur.getMdp());
    	db = getWritableDatabase();
    	db.insert(TABLE_VISITEUR, null, values);
    	db.close();
    } 
        
        public int countVisiteur() {  
    	
    	db = getWritableDatabase();  
    	
    	sql = "select count(*) from " + TABLE_VISITEUR ;
    	
    	c = db.rawQuery(sql, null);  
    	
    	c.moveToFirst();  
    	
    	int total = c.getInt(0); 
    	
    	c.close();  
    	db.close();  
    	return total ;  
    }  
        
        
        
        public String  identificationVisiteur(String pass){  
    	
    	String matVisiteur= "0" ;
    	 
    	db = getWritableDatabase();  
    	
    	sql = "select mat from visiteur where pwd = '"+pass+"'" ; 
    	
    	
    	c = db.rawQuery(sql, null);  
    	c.moveToFirst();  
    	
    	 if(c.getCount() != 0){
    	            
    	matVisiteur = c.getString(0)  ;
    	 }
    	
    	c.close();  
    	db.close();
    	
    	return matVisiteur;
    	
    	}
    	
        public String  recupIdVisiteur(){  
        	
        	String matVisiteur;
        	 
        	db = getWritableDatabase();  
        	
        	sql = "select mat from visiteur" ; 
        	
        	
        	c = db.rawQuery(sql, null); 
        	
        	c.moveToFirst();  
        	
        	            
        	matVisiteur = c.getString(0)  ;
        	
        	c.close();  
        	db.close();
        	
        	return matVisiteur;
        	
        	}
        	
        
        
        
    // Insertion des frais au forfait	
        
        public void sqlInsererFraisForfait (FraisForfait ff) {
        	
        	
        	ContentValues values = new ContentValues();
        
        	values.put(C_MAT, ff.getNumVis());
        	values.put(C_DATE, ff.getDate());
        	values.put(this.C_IDFRAISFORFAIT,ff.getIdFraisForfait());
        	values.put(this.C_QUANTITE, ff.getQuantite());
        	
        	db = getWritableDatabase();
        	db.insert(TABLE_FF, null, values);
        	db.close();
     
        }
        
        /**
         * Met à jour les frais au forfait en base de données
         *
         * @param C_DATE correspond à la date où la prestation est à modifier
         * @param C_IDFRAISAUFORFAIT correspond à l'identifiant de la prestation
         * @param C_QUANTITE correspond au nb de prestations
         */
    
        public void sqlModifFrais(FraisForfait frais, String selected_ID){
    
    		ContentValues values = new ContentValues();
    		values.put(C_DATE, frais.getDate());
    		values.put(C_IDFRAISFORFAIT, frais.getIdFraisForfait());
    		values.put(C_QUANTITE,frais.getQuantite());
    
    		// Appeler la méthode modifier de SQLiteOpenHelper et fermer la base de données
    		// performing task
    		db = getWritableDatabase();
    		db.update(TABLE_FF, values, C_ID + "=?", new String[] { selected_ID });
    		db.close();
    	}
        
       
        public Cursor  tousLesFraisForfait() {  
        	
        		
        		db = getReadableDatabase();
        		
        		c = db.query(TABLE_FF, null, null, null, null, null, null);
        		return c;
        	
      	 } 
      
    
    public void sqlSupprimerFraisForfait(String selected_ID ){
    		
    		db = getWritableDatabase();
    		db.delete(TABLE_FF, C_ID + "=?", new String[] { selected_ID });
    		db.close();
    	}
        
        
    
        }
    Ensuite, j'ai voulu exploiter méthode sqlModifFrais(FraisForfait frais, String selected_ID) dans une classe FraisForfaitActivity :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    
    public class FraisForfaitActivity extends Activity  {
    
    	
    	String ff_ID = "";
    	
    	FraisForfait frais;
    	
    	RadioButton rbFF;
    	
    	RadioGroup rgFF;
    	EditText  txtQuantite, txtDate;
        Spinner spinnerPV;
    	Button btnAjouter;
    	
    	ListView lvFrais;
    	
    	SimpleCursorAdapter adapter; 
        Dao dao;
    	SQLiteDatabase db;
    	
    	@Override
    	
    	protected void onCreate(Bundle savedInstanceState) {
    		
    		
    		dao = new Dao(this);
    		
    
    		super.onCreate(savedInstanceState);
    		
    		
    		setContentView(R.layout.activity_frais_forfait);
    		
    		
    		dateSysteme();
    	
    		
    		lvFrais = (ListView) findViewById(R.id.listView1);
    
    		
    		// mettre la date systeme dans edDate du layout avtivity=frais=forfaot.XML
    		
    		SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
            Date date = new Date();
            String nowDate = dateFormat.format(date);
    		
    		txtDate =(EditText) findViewById(R.id.etDate);		
    		txtDate.setText(nowDate);	
    		
    		txtQuantite = (EditText) findViewById(R.id.etQuantite);
    		txtDate =(EditText) findViewById(R.id.etDate);
    		
    		rgFF = (RadioGroup) findViewById(R.id.rg1);
    		 
    		 int idChoix = rgFF.getCheckedRadioButtonId();
    		 
    		 
    		 
    		 rbFF = (RadioButton) findViewById(idChoix);
    		
    		 
    		 
    		 
    		lvFrais.setOnItemClickListener(new OnItemClickListener() {
    			
    			
           
    			@Override
    			public void onItemClick(AdapterView<?> adapter, View v,
    					int position, 
    					long id) {
    								
    				String lib, date, qt;
    
    				Cursor row = (Cursor) adapter.getItemAtPosition(position);
    				
    				
    				ff_ID = row.getString(0);
    				
    				Toast.makeText(FraisForfaitActivity.this, row.getString(3), 
    						Toast.LENGTH_LONG).show();
    				
    				lib = row.getString(3);
    				date = row.getString(2);
    				qt = row.getString(4);	
    				txtQuantite.setText(qt);		
    				txtDate.setText(date);
    								
    				if ("Repas".equals(lib.trim()))
    					rgFF.check(R.id.rbRepas);
    				if ("Nuitée".equals(lib.trim()))
    					rgFF.check(R.id.rbNuite);
    				if ("KM".equals(lib.trim()))
    					rgFF.check(R.id.rbKm);
    				if ("Etape".equals(lib.trim()))
    					rgFF.check(R.id.rbEtape);
    					
    			}
    			
    		});
    		
    		
    		
    		
    		garnirListView();
    		
    		
    		
    		
    	}
    	
    	public void insertionFraisForfait(View v) {
    		
    		String presta;
    		//Recup le choix de la préstation RadioButton
    		
    		 rgFF = (RadioGroup) findViewById(R.id.rg1);
    		 
    		 int idChoix = rgFF.getCheckedRadioButtonId();
    		 
    		 rbFF = (RadioButton) findViewById(idChoix);
    
    		 //Recup de la quantité 
    		txtQuantite = (EditText) findViewById(R.id.etQuantite);
    		
    		
    		spinnerPV = (Spinner) findViewById(R.id.spinner1);
    		
    		presta= rbFF.getText().toString();
    		
    		
    	
    	if (rbFF.getText().toString().equals("Km")) {
    			
    		presta=String.valueOf(spinnerPV.getSelectedItem());
    	}
    	
    	
    		txtDate =(EditText) findViewById(R.id.etDate);
    			
    		String numVis=dao.recupIdVisiteur();
    		
    		FraisForfait ff = new FraisForfait (numVis, presta, 
    				txtDate.getText().toString(),
    				Integer.parseInt(txtQuantite.getText().toString()) );
    		
    		
    		Toast.makeText(FraisForfaitActivity.this, presta + " "+ 
    		Integer.parseInt(txtQuantite.getText().toString())
    				+"  "+
    		ff.getDate() + "   " +numVis ,
    				Toast.LENGTH_LONG).show();
    		
    		dao.sqlInsererFraisForfait(ff);
    		
    		this.garnirListView();
    		
    	}
    	
    	
    	
    	
    	public void initialiserQuantite(View v){
    		txtQuantite = (EditText) findViewById(R.id.etQuantite);
    		txtQuantite.setText("1");
    
    	}
    	
    	public void initialiserKM(View v){
    		txtQuantite = (EditText) findViewById(R.id.etQuantite);
    		txtQuantite.setText("0");
    		
    	}
    	
    	@SuppressWarnings("deprecation")
    	
    	public void garnirListView() {
    		 
    		Cursor c = dao.tousLesFraisForfait();
    		adapter = new SimpleCursorAdapter(
    				this,
    				R.layout.activity_item_frais_forfait,
    				c,
    				new String[] {Dao.C_IDFRAISFORFAIT,  Dao.C_DATE, Dao.C_QUANTITE },
    				new int[] { R.id.tvLib, R.id.tvDate2, R.id.tvMnt2 });
    		
    		lvFrais.setAdapter(adapter);
    	
    	}
    	
    	
    	
    	
    	
    	public void supprimerFF(View v){
    		
    		dao.sqlSupprimerFraisForfait(ff_ID);
    		
    		
    		garnirListView();
    		
    		
    		}
    	
    	public void modifierFF(View v) {
    		
    
    	}
    	
    	
    
    	public void  dateSysteme() {
    		
    		//Date systeme
    		
    		
    			SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
    	        Date date = new Date();
    	        String nowDate = dateFormat.format(date);
    			
    			txtDate =(EditText) findViewById(R.id.etDate);
    			txtDate.setText(nowDate);
    		
    	}
    	
    
    	
    
    }
    J'ai essayé de plusieurs façon, en reprenant le modèle supprimerFF ou insertionFraisForfiat (les 2 fonctionnent) mais pour le mofifier, là je sèche, quoique je fasse, ça me plante mon appli.
    Merci d'avance de votre aide.

  4. #4
    Membre actif Avatar de Altak
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2014
    Messages
    170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2014
    Messages : 170
    Points : 245
    Points
    245
    Par défaut
    Re,

    Tu peux mettre l'erreur que tu as? Ca doit écrit sur ta console

  5. #5
    Membre à l'essai
    Femme Profil pro
    Développeur Web
    Inscrit en
    Juin 2014
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2014
    Messages : 18
    Points : 15
    Points
    15
    Par défaut
    Re,
    En fait, c'est quand je lance l'émulateur que ça plante.
    Quand je crée un nouveau frais, il s'ajoute bien à ma listeview et aussi dans ma base, bien sûr, avec les quantités entrées, la date.
    Quand je je veux supprimer, ça fonctionne aussi grâce à mon bouton et ma fonction supprimerFF.
    Par contre j'ai essayer de faire la même chose avec la fonction modifierFF et le bouton associé, mais la l'appli s'arrête et revient au menu.

  6. #6
    Membre à l'essai
    Femme Profil pro
    Développeur Web
    Inscrit en
    Juin 2014
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2014
    Messages : 18
    Points : 15
    Points
    15
    Par défaut
    En console, j'ai ces messages d'erreurs :

    11-10 08:17:17.631: E/AndroidRuntime(1323): Caused by: java.lang.NullPointerException
    11-10 08:17:17.631: E/AndroidRuntime(1323): at com.greta.gsb_frais_v1.Dao.sqlModifFrais(Dao.java:229)
    11-10 08:17:17.631: E/AndroidRuntime(1323): at com.greta.gsb_frais_v1.FraisForfaitActivity.modifierFF(FraisForfaitActivity.java:250)
    11-10 08:17:17.631: E/AndroidRuntime(1323): ... 14 more

  7. #7
    Membre actif Avatar de Altak
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2014
    Messages
    170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2014
    Messages : 170
    Points : 245
    Points
    245
    Par défaut
    Tu peux mettre la ligne 229 de ta classe Dao? Tu utilise une variable qui est égal a null (soit jamais instancié ou soit détruite entre le moment ou tu l'as instancié et le moment ou tu l'utilise).
    Sur le code que tu donne avant, la ligne 229 correspond a un commentaire, tu a sans doute effectué des modif sur ton code.

    Sinon, vérifie l’instanciation des variables que tu utilise a cette ligne et regarde avec ton debugger si besoin.

  8. #8
    Membre à l'essai
    Femme Profil pro
    Développeur Web
    Inscrit en
    Juin 2014
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2014
    Messages : 18
    Points : 15
    Points
    15
    Par défaut
    La ligne 229 de ma classe Dao correspond à la date, je ne comprend pas pourquoi spécialement celle-là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public void sqlModifFrais(FraisForfait frais, String selected_ID){
    
    		ContentValues values = new ContentValues();
    		values.put(C_DATE, frais.getDate());
    		values.put(C_IDFRAISFORFAIT, frais.getIdFraisForfait());
    		values.put(C_QUANTITE,frais.getQuantite());
    
    		// Appeler la méthode modifier de SQLiteOpenHelper et fermer la base de données
    		// performing task
    		db = getWritableDatabase();
    		db.update(TABLE_FF, values, C_ID + "=?", new String[] { selected_ID });
    		db.close();
    	}

  9. #9
    Membre actif Avatar de Altak
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2014
    Messages
    170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2014
    Messages : 170
    Points : 245
    Points
    245
    Par défaut
    Il y a deux possibilité :
    Soit frais est null et dans ce cas la, ca plante lorsque tu appelle frais.getDate()
    Soit le retour de frais.getDate() est égal a null et ca plante lorsque tu veux faire le value.put()

    Vérifie les deux et ca devrais etre bon

  10. #10
    Membre à l'essai
    Femme Profil pro
    Développeur Web
    Inscrit en
    Juin 2014
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2014
    Messages : 18
    Points : 15
    Points
    15
    Par défaut
    Bon ! J'ai enfin trouvé une méthode qui marche : ma listeview et ma tables sont bien modifiées. Je n'ai pas touché à ma méthode de la classe Dao. Par contre dans ma classe FraisForfaitActivity, j'ai repris la même quasiment la même méthode que pour insérer, j'ai simplement appelé la méthode sqlModifierFF à la place de sqlInsererff.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    public void modifierFF(View v) {
     
     
     
     
    		String presta;
    		//Recup le choix de la préstation RadioButton
     
    		 rgFF = (RadioGroup) findViewById(R.id.rg1);
     
    		 int idChoix = rgFF.getCheckedRadioButtonId();
     
    		 rbFF = (RadioButton) findViewById(idChoix);
     
    		 //Recup de la quantité 
    		txtQuantite = (EditText) findViewById(R.id.etQuantite);
     
     
    		spinnerPV = (Spinner) findViewById(R.id.spinner1);
     
    		presta= rbFF.getText().toString();
     
     
     
    	if (rbFF.getText().toString().equals("Km")) {
     
    		presta=String.valueOf(spinnerPV.getSelectedItem());
    	}
     
     
    		txtDate =(EditText) findViewById(R.id.etDate);
     
    		String numVis=dao.recupIdVisiteur();
     
    		FraisForfait ff = new FraisForfait (numVis, presta, 
    				txtDate.getText().toString(),
    				Integer.parseInt(txtQuantite.getText().toString()) );
     
     
    		dao.sqlModifFrais(ff, ff_ID);
     
     
     
    		this.garnirListView();
     
     
    	}
    En tout cas merci beaucoup pour ton aide !!!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Android SQLITE fonction update
    Par Benmaster1 dans le forum Android
    Réponses: 3
    Dernier message: 15/04/2014, 19h05
  2. Impossible d'installer SDK Android à cause de Java
    Par Novatech3d dans le forum Android
    Réponses: 4
    Dernier message: 01/08/2013, 12h38
  3. Android SQLite problèmes update Id (autoincrement)
    Par hamzahoucine dans le forum Android
    Réponses: 11
    Dernier message: 12/05/2012, 00h44
  4. SQL avec sqlite - insert, update
    Par Seth77 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 06/07/2008, 11h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo