更新不';不工作sqlite android
更新表中的列时出现问题。我尝试了这两种解决方案:更新不';不工作sqlite android,android,sqlite,Android,Sqlite,更新表中的列时出现问题。我尝试了这两种解决方案: this.openDataBase(); String SQLStatement = "update " + TABLE_POSES; SQLStatement += " set " + COLUMN_SKIP + "=" + SKIP + " Where "; SQLStatement += COLUMN_ID + "=" + String.valueOf(skipPoseId);
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();
这两个代码段都不起作用,我也不会抛出任何异常。我做错了什么?您应该使用第二种方法,使用
update()
并检查返回值。如果该值为零,则数据库的状态不是您期望的状态,并且没有更新任何行。如果行不是零,则更新成功
如果访问数据库时出现任何问题,则在调用update()
之前会引发异常
我会像这样利用update()
的args参数:
myDataBase.update(TABLE_POSES, args, COLUMN_ID + " = ?", new String[]{ Long.toString(skipPoseId) });
像这样使用更新
String query="UPDATE tablename SET columnname="+var+ "where columnid="+var2;
sqlitedb.execSQL(query);
只需在字符串查询中编写更新查询并执行。如果在代码中使用
db.begintransaction()
,则必须在db.endtransaction()之前调用db.setTransactionSuccessful()
,例如:
try {
SQLHelper dbHelper = new SQLHelper(this);
SQLiteDatabase db = dbHelper.getWritableDatabase();
db.beginTransaction();
...................
db.setTransactionSuccessful();
db.endTransaction();
db.close();
}
catch (Exception ex){
}
我也有同样的问题。经过深思熟虑和调试,我发现WHERE条件没有处理表中的任何行
奇怪的是,myDatabase.update命令以1作为返回值,我认为它是受更新影响的1行。是否有错误?你能发布你的日志吗?我根本没有得到任何异常抛出。我还尝试使用beginTransaction();和setTransactionSuccessful()语句,但这没有更改。如何检查行是否正在更新?除非Android代码中存在错误,否则1表示一行已更新。根据应用程序的行为,我可以判断该列未更新。@Kristy您应该通过在SQLite Manager中提取数据库来检查数据库,行是否已更新。如果是,则代码中可能存在错误。我不想建议这样做,但肯定有其他错误发生。您的更新正在运行。如果在模拟器上运行它,那么可以使用Eclipse的DDMS插件检索SQLite数据库文件。数据库位于/data/data//databases/中。您可以在任何SQLite客户端中打开它,您将看到更新正在工作。检查文件是表明你做得对的最好方式。很高兴听到它!当数据库处于特定状态时,代码中仍可能有一个bug,它会再次出现。使用准备好的语句更安全