Android sqlite更新表总是返回0

时间:2014-02-26 19:19:35

标签: java android sqlite

我在这里看到了几个与sqlite更新有关的问题,但是无法解决这个问题。我无法更新表,它总是给0;

public void onCreate(SQLiteDatabase db) {
    try{
    db.execSQL(createTable);
    db.execSQL(createQuestionTable);
    populateQuestionTable(db);
    }

    catch( SQLException e)
    {
        e.printStackTrace();
    }
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    db.execSQL("DROP TABLE IF EXISTS alarms" );
    onCreate(db);

}

我能够插入和获取数据,但更新它时只会出现问题。

public int updateTable( int r )
{
    String row = String.valueOf(r);
    Log.d("mydb", "disbale alarm" + " " + row);
    SQLiteDatabase db = this.getWritableDatabase();
    ContentValues values = new ContentValues();
    values.put(isDisable, 1);

    int result = 0;
    try{
     result = db.update("alarms", values,  keyId+" = ? " ,new String[]{row});
    Log.d("result", ""+result);
    }
    catch(Exception e)
    {
        e.printStackTrace();
    }

    db.close();

    return result;
}

P.S。我也试过execSql()

3 个答案:

答案 0 :(得分:12)

听起来没有什么符合您的标准。也许作为测试,您应该将null作为where条件传递(这表示更新所有行)并查看是否仍然返回0。

如果之后仍然返回0,我会确保您确实在数据库表中保存了数据。

答案 1 :(得分:7)

SQLiteDatabase.update()返回受影响的行数。因此,在您的情况下,没有行受到影响(很可能是因为您的WHERE子句)

答案 2 :(得分:0)

使用日期库时,请不要忘记以id = 1而不是0开头。我遇到同样的问题,更新和删除均无效,因为我的起始ID错误。