use*_*760 4 database sqlite android
我尝试更新数据库表,这是我的代码:
public void updatefiletable(String filename, String v1, String v2){
AndroidOpenDbHelper androidOpenDbHelperObj = new AndroidOpenDbHelper(this);
SQLiteDatabase sqliteDatabase = androidOpenDbHelperObj.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(AndroidOpenDbHelper.COLLUMN_NAME_FILE_CLOUD, v1);
values.put(AndroidOpenDbHelper.COLLUMN_NAME_FILE_DATE_UPLOADING, v2);
sqliteDatabase.update(AndroidOpenDbHelper.TABLE_FILE, values, AndroidOpenDbHelper.COLUMN_NAME_FILE_NAME+"="+filename, null);
sqliteDatabase.close();
}
Run Code Online (Sandbox Code Playgroud)
当我用file_name值调用我的方法egal priv_priv_secondfile_2012-06-15.pdf我在logcat中得到它:
android.database.sqlite.SQLiteException: unrecognized token: "15.pdf": ,
while compiling: UPDATE file_table SET file_cloud_column=?,
file_date_upload_column=?
WHERE file_name_column=priv_priv_secondfile_2012-06-15.pdf
Run Code Online (Sandbox Code Playgroud)
我该怎么解决?
Gra*_*and 17
您需要转义filename参数.文件名中的标点符号使SQLite感到困惑.您可以'single quotes'通过在传入SQLite的字符串中包含文件名来实现,但将它作为单独的参数传递更简洁,更安全,如下所示:
sqliteDatabase.update(AndroidOpenDbHelper.TABLE_FILE, values,
AndroidOpenDbHelper.COLUMN_NAME_FILE_NAME+"=?", new String[] {filename});
Run Code Online (Sandbox Code Playgroud)