【问题标题】:Error android.database.sqlite.SQLiteException: no such column: while updating SQLite database错误 android.database.sqlite.SQLiteException:没有这样的列:更新 SQLite 数据库时
【发布时间】:2019-04-05 10:14:51
【问题描述】:

我在SQLite 数据库中有一列。它存储文本值。插入新值时,我需要删除以前的值并在数据库中添加新值。这是 Class 中的方法,它扩展 SQLiteOpenHelper 以更新列。

public void updateOffline(String data){
        SQLiteDatabase db=this.getWritableDatabase();
        String updateQuery="UPDATE "+OFFLINE_MODE +" SET "+OFFLINE_DATA+" = "+ data;
        db.execSQL(readQuery);
    }  

data 是我需要的字符串UPDATE
我在 Fragment 之一中将此方法称为

db.updateOffline(tempArray.toString());  

我收到错误

android.database.sqlite.SQLiteException: no such column: {"name":"jjajaja","phone":"4545454545","no_people":"2","booktime":"12:46 pm"} (code 1): , while compiling: UPDATE offlinedata SET  offlinequeue =[{"name":"jjajaja","phone":"4545454545","no_people":"2","booktime":"12:46 pm"}]  

如何解决这个问题?

【问题讨论】:

  • no such column 表明您提供了错误的列名

标签: android database sqlite sql-update android-sqlite


【解决方案1】:

您不能只在 SQL 中转储 JSON 字符串并期望它在语法上有效。

SQL 中的字符串文字位于“单引号”中,但仅在 SQL i 引号中转储数据会使您面临 SQL 注入。请改用变量。

如果您将SQLiteDatabse update() 方法与ContentValues 一起使用,它会自动为您使用变量。

如果您想继续使用原始 SQL,请更改

String updateQuery="UPDATE "+OFFLINE_MODE +" SET "+OFFLINE_DATA+" = "+ data;
db.execSQL(updateQuery);

类似

String updateQuery="UPDATE "+OFFLINE_MODE +" SET "+OFFLINE_DATA+" = ?";
db.execSQL(updateQuery, new Object[] { data });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-30
    • 1970-01-01
    • 2012-04-22
    • 2013-05-25
    • 2013-10-03
    • 1970-01-01
    • 2019-08-13
    • 2017-02-09
    相关资源
    最近更新 更多