2017-10-18 168 views
0

我有應用程序包含數據庫,我創造了許多表和wihtout任何問題,插入數據,但是當我更新的數據,沒有更新的數據沒有任何問題出現在日誌SQLite的更新不能正常工作

代碼:中類DB延伸SqliteOpenHelper我有的onCreate如以下代碼

@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)"); 

} 

也,此更新方法的代碼:

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; 

} 

我有另一類是listAdapterË xtends ArrayAdapter我想從這個類更新。 getView包含onClickListener當按鈕點擊它應該是更新 :

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

我確定表名(sh.getString( 「listType」, 「表1」)),它提供withot問題.. 什麼問題在上面的代碼..請幫我

+0

你確定你逝去的使用方法'的getId()'正確的ID?另外我認爲sqlite是不區分大小寫的,但只是用「id」替換「ID」來測試。 –

+0

是的,我確信getId() –

+0

你100%確定它是正確的ID?我建議做'Cursor csr = database.query(tableName,null,「where ID =?」,new String [] {m​​yid},null,null,null,null);'後面跟着'if(csr .getCount()<1){Log.d(「DBUPDATE」,「無法更新id =」+ Integer.toString(fav)+「不存在。」);}' – MikeT

回答

0

可能是你的id應該作爲整數傳遞而不是字符串。 或者你可以試試這個

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