更新不适用于sqlite android

时间:2012-10-29 17:03:08

标签: android sqlite

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

        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 个答案:

答案 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行。