我有应用程序包含数据库,我创建了许多表并插入数据没有任何问题但是当我更新数据时,数据没有更新没有任何问题出现在日志
代码:在类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 extends ArrayAdapter我想从这个类更新。 getView包含onClickListener,当点击按钮时它应该更新 :
int a=db.updateData(sh.getString("listType","table1"),arrayList.get(position).getId(),1);
我确定了表名(sh.getString(“listType”,“table1”)),它提供了问题.. 上面的代码有什么问题..请帮帮我
答案 0 :(得分:0)
可能是你的id应该作为整数传递而不是字符串。 或者你可以尝试这个
int i = database.update(tableName, contentValues, "ID='?'", new String[]{myid});