更新sqlite数据库时出现错误android.database.sqlite.SQLiteException:没有此类列
我在SQLite数据库中有一列。它存储文本值。当插入新值时,我需要删除以前的值并在数据库中添加新值。这是类中扩展SQLiteOpenHelper以更新列的方法更新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+" =
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 });
没有这样的列表明您提供了错误的列名