2017-10-18 7 views
0

j'ai app contient la base de données, j'ai créé de nombreuses tables et insérer des données wihtout problème mais quand je mettre à jour les données, les données ne sont mis à jour sans aucun problème apparais dans le journalmise à jour de SQLite ne fonctionne pas

le code: dans le classe DB étend SqliteOpenHelper i ai onCreate que le code suivant

@Override 
public void onCreate(SQLiteDatabase db) { 
db.execSQL("create table table1(id INTEGER PRIMARY KEY AUTOINCREMENT, title TEXT ,detail TEXT ,source TEXT ,isFav INTEGER)"); 
    db.execSQL("create table table2(id INTEGER PRIMARY KEY AUTOINCREMENT, title TEXT ,detail TEXT,source TEXT ,isFav INTEGER)"); 
    db.execSQL("create table table3(id INTEGER PRIMARY KEY AUTOINCREMENT, title TEXT ,detail TEXT,source TEXT, isFav INTEGER)"); 
    db.execSQL("create table fav (id INTEGER PRIMARY KEY AUTOINCREMENT, title TEXT ,detail TEXT,source TEXT ,isFav INTEGER)"); 

} 

également, le code de la méthode de mise à jour:

public int updateData(String tableName,Long id, int fav) { 
    SQLiteDatabase database = this.getWritableDatabase(); 
    ContentValues contentValues = new ContentValues(); 

    contentValues.put("isFav",fav); 

    String myid= String.valueOf(id); 

    Log.w("myApp", myid+ " fav = "+fav); 
    int i = database.update(tableName, contentValues, "ID=?", new String[]{myid}); 
    if (i > 0) 
     return 1; 
    else return 0; 

} 

i ai une autre classe qui est listAdapter e xtends ArrayAdapter Je veux mettre à jour à partir de cette classe. getView Contient onClickListener quand cliquez sur le bouton, il devrait être mise à jour :

int a=db.updateData(sh.getString("listType","table1"),arrayList.get(position).getId(),1); 

je me suis assuré de nom de la table (sh.getString ("listType", "table1")), il a livré problème withot .. ce que le problème dans le code ci-dessus .. s'il vous plaît aidez-moi

+0

Avez-vous fait que vous passez l'ID correct en utilisant la méthode 'getId()'? Aussi, je pense que sqlite est insensible à la casse, mais remplacez simplement "ID" par "id" juste pour tester. –

+0

oui je me suis assuré de getId() –

+0

êtes-vous 100% sûr que c'est l'id CORRECT? Je suggérerais de faire 'Cursor csr = database.query (nomTable, null," où ID =? ", New String [] {myid}, null, null, null, null);' suivi de quelque chose comme 'if (csr .getCount() <1) {Log.d ("DBUPDATE", "Impossible de mettre à jour id =" + Integer.toString (fav) + "n'existe pas.");} ' – MikeT

Répondre

0

Peut être votre id doit être passé comme entier pas comme une chaîne. Ou vous pouvez essayer cette

int i = database.update(tableName, contentValues, "ID='?'", new String[]{myid});