继续得到SQLiteException没有这样的列

时间:2015-06-08 03:25:39

标签: java android database sqlite

我正在尝试更新数据库的特定行,我有以下代码

 public String CREATE_QUERY = "CREATE TABLE " + TableData.TableInfo.TABLE_NAME +
        "(" + TableData.TableInfo.USER_NAME + " TEXT, " + TableData.TableInfo.USER_PIN +
        " TEXT, " + TableData.TableInfo.PARTNER_FIRST + " Text, " + TableData.TableInfo.PARTNER_SECOND +
        " TEXT, " + TableData.TableInfo.DATE + " TEXT, " + TableData.TableInfo.SIGNATURE_IMAGE + " BLOB, " +
        TableData.TableInfo.PARTNER_SIGNATURE + " BLOB);";

我从

收到错误
ContentValues cv = new ContentValues();
    DatabaseOperations DOP = new DatabaseOperations(ctx);
    Cursor CR = DOP.getInformation(DOP);
    CR.moveToLast();

    SQLiteDatabase SQ = DOP.getWritableDatabase();

    ContentValues args = new ContentValues();
    args.put(TableData.TableInfo.USER_NAME, CR.getString(0));
    args.put(TableData.TableInfo.PARTNER_FIRST, partner_name);


    SQ.update(TableData.TableInfo.TABLE_NAME, args, "ROWID=?" + id, null);

这是错误:

     Caused by: android.database.sqlite.SQLiteException: no such column: partner_first (code 1): , while compiling: UPDATE reg_info SET user_name=?,partner_first=? WHERE ROWID=?54

这是我的表格信息

public static abstract class TableInfo implements BaseColumns {

    public static final String USER_NAME = "user_name";
    public static final String USER_PIN = "user_pin";
    public static final String PARTNER_FIRST = "partner_first";
    public static final String PARTNER_SECOND = "partner_second";
    public static final String DATE = "date";
    //public static final String LOC = "location";
    public static final String SIGNATURE_IMAGE = "signature_image";
    public static final String PARTNER_SIGNATURE = "partner_signature";
    public static final String DATABASE_NAME = "user_info";
    public static final String TABLE_NAME = "reg_info";

}

我做错了什么?

2 个答案:

答案 0 :(得分:2)

  

卸载重命名数据库..这种情况经常发生在你身上   更改您的表名或数据库中的任何更改。

答案 1 :(得分:0)

问题在于您的UPDATE语句 - 您有一个连接的字符串,并且没有传递" WHERE" arg在这一行上正确:

SQ.update(TableData.TableInfo.TABLE_NAME, args, "ROWID=?" + id, null); 

只需这样做:

SQ.update(TableData.TableInfo.TABLE_NAME, args, "ROWID=" + id, null); 

该错误具有误导性,因为SQL语句完全错误。

相关问题