0

更新表中的列时出现问题。我尝试了这两种解决方案:

        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();

这些代码片段都不起作用,我没有抛出任何异常。我究竟做错了什么?

4

4 回答 4

0

您应该使用第二种方法 usingupdate()并且您应该检查返回值。如果该值为零,则数据库的状态不是您所期望的,并且没有更新任何行。如果该行不为零,则更新成功。

如果您访问数据库有任何问题,将在update()调用之前引发异常。

我会像这样利用 args 参数update()

myDataBase.update(TABLE_POSES, args, COLUMN_ID + " = ?", new String[]{ Long.toString(skipPoseId) });
于 2012-10-29T17:09:30.987 回答
0

像这样使用更新,

        String query="UPDATE tablename SET columnname="+var+ "where columnid="+var2;
        sqlitedb.execSQL(query);

只需在字符串查询中编写更新查询并执行。

于 2012-10-29T17:18:06.927 回答
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){

}
于 2016-11-24T04:04:51.777 回答
0

我有完全相同的问题。经过深思熟虑和调试后,我发现 WHERE 条件没有解决表的任何行。

奇怪的是 myDatabase.update 命令给出 1 作为返回值,我将其理解为受更新影响的 1 行。

于 2019-01-12T22:35:48.120 回答