Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
更新sqlite数据库时出现错误android.database.sqlite.SQLiteException:没有此类列_Android_Database_Sqlite_Sql Update_Android Sqlite - Fatal编程技术网

更新sqlite数据库时出现错误android.database.sqlite.SQLiteException:没有此类列

更新sqlite数据库时出现错误android.database.sqlite.SQLiteException:没有此类列,android,database,sqlite,sql-update,android-sqlite,Android,Database,Sqlite,Sql Update,Android Sqlite,我在SQLite数据库中有一列。它存储文本值。当插入新值时,我需要删除以前的值并在数据库中添加新值。这是类中扩展SQLiteOpenHelper以更新列的方法 public void updateOffline(String data){ SQLiteDatabase db=this.getWritableDatabase(); String updateQuery="UPDATE "+OFFLINE_MODE +" SET "+OFFLINE_DATA+" =

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

public void updateOffline(String data){
        SQLiteDatabase db=this.getWritableDatabase();
        String updateQuery="UPDATE "+OFFLINE_MODE +" SET "+OFFLINE_DATA+" = "+ data;
        db.execSQL(readQuery);
    }  
其中data是我需要更新的字符串 我在一个片段中调用这个方法,如下所示

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"}]  

如何解决这个问题?

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

SQL中的字符串文字以“单引号”的形式出现,但仅仅在SQLI引号中转储数据就会暴露给SQL注入。改用变量

如果对ContentValues使用SQLiteDatabase更新方法,它会自动为您使用变量

如果您想继续使用原始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 });
没有这样的列表明您提供了错误的列名