Android数据库无法更新

时间:2014-10-22 12:30:01

标签: android database sqlite

我会尝试更新数据库,但无法更新。它正确插入但不更改新行。

    mydatabase = getMydatabase();// this.getWritableDatabase();
    ContentValues devices = new ContentValues();
    devices.put(KEY_NAME, name);
    devices.put(KEY_ADDRESS, address);
    devices.put(KEY_GRADE, grade);
    devices.put(KEY_ARRAY,gradeArray);
    try{
    mydatabase.insertOrThrow(DATABASE_TABLE, null, devices);
    } catch (SQLiteConstraintException e) {
        String where = "'"+address+"'='"+KEY_ADDRESS+"'";
        mydatabase.update(DATABASE_TABLE, devices, where,null);
    }
    mydatabase.close();

此代码在函数中采用不同的grade和gradeArray值。它们是字符串。

数据库创建声明:

String create = String.format("CREATE TABLE %s ( %s INTEGER PRIMARY KEY AUTOINCREMENT,"+
                            " %s TEXT ,%s TEXT NOT NULL UNIQUE , %s TEXT NOT NULL,  %s TEXT);",
                    DATABASE_TABLE, KEY_ROW_ID, KEY_NAME, KEY_ADDRESS, KEY_GRADE, KEY_ARRAY);

1 个答案:

答案 0 :(得分:1)

String where = "'"+address+"'='"+KEY_ADDRESS+"'";

您在这里将文字与文字进行比较。从列名中删除'',例如

String where = KEY_ADDRESS + "='"+address+"'";

要避免SQL注入,请使用参数:

String where = KEY_ADDRESS + "=?";
mydatabase.update(DATABASE_TABLE, devices, where, new String[] { address });