更新表中的列时出现问题。我尝试了这两种解决方案:
this.openDataBase();
String SQLStatement = "update " + TABLE_POSES;
SQLStatement += " set " + COLUMN_SKIP + "=" + SKIP + " Where ";
SQLStatement += COLUMN_ID + "=" + String.valueOf(skipPoseId);
myDataBase.rawQuery(SQLStatement, null);
this.close();
和此:
this.openDataBase();
ContentValues args = new ContentValues();
args.put(COLUMN_SKIP,SKIP);
myDataBase.update(TABLE_POSES, args, COLUMN_ID + "=" + String.valueOf(skipPoseId),null);
this.close();
这些代码片段都不起作用,我也没有抛出任何异常。我做错了什么?
答案 0 :(得分:0)
您应该使用update()
使用第二种方法,并且应该检查返回值。如果值为零,则数据库的状态不是您所期望的,并且没有更新行。如果该行不为零,则更新成功。
如果您访问数据库时出现任何问题,则会在update()
来电之前抛出异常。
我会像update()
一样利用args参数:
myDataBase.update(TABLE_POSES, args, COLUMN_ID + " = ?", new String[]{ Long.toString(skipPoseId) });
答案 1 :(得分:0)
使用像这样的更新,
String query="UPDATE tablename SET columnname="+var+ "where columnid="+var2;
sqlitedb.execSQL(query);
只需在String查询中编写更新查询并执行。
答案 2 :(得分:0)
如果您在代码中使用db.begintransaction()
,则必须在db.setTransactionSuccessful()
之前致电db.endtransaction()
,例如:
try {
SQLHelper dbHelper = new SQLHelper(this);
SQLiteDatabase db = dbHelper.getWritableDatabase();
db.beginTransaction();
...................
db.setTransactionSuccessful();
db.endTransaction();
db.close();
}
catch (Exception ex){
}
答案 3 :(得分:0)
我遇到了完全相同的问题。经过深思熟虑和调试后,我发现WHERE条件没有解决表的任何行。
奇怪的是,myDatabase.update命令以1作为返回值,而我将其理解为受更新影响的1行。