2012-10-26 168 views
0

我的應用程序崩潰與以下錯誤更新查詢在更新查詢android.sqlite

10-26 12:35:59.219: E/AndroidRuntime(23078): Caused by: android.database.sqlite.SQLiteException: no such column: current_Playlist.xml: , while compiling: UPDATE FileRevisionHistory SET FileRevision=? WHERE FileName=current_Playlist.xml 

的代碼更新用是

public void updateFileRevision(FileRevision inFileRevision) { 
    ContentValues values = new ContentValues(); 
    values.put(MySQLiteHelper.KEY_REVISION, inFileRevision.mRevision); 
    long updatetId = database.update(MySQLiteHelper.TABLE_REVISION_HISTORY, values,MySQLiteHelper.KEY_NAME + "=" + inFileRevision.mFileName,null); 
    Log.i("DbExampleLog", "The file's rev is: " + updatetId); 

什麼是錯誤的,我查詢?

+0

我想,表中沒有列存在。看到Logcat行沒有這樣的列:current_Playlist.xml –

回答

1

當你指定的文件名是一個字符串,它應該在單引號內。試試這個

long updatetId = database.update(MySQLiteHelper.TABLE_REVISION_HISTORY, values,MySQLiteHelper.KEY_NAME + "='" +inFileRevision.mFileName+ "'",null); 
+0

正如我的意思,但這種做法不是很乾淨,不安全。 – Sajmon

1

起初我建議你使用佔位符因爲你的方法不是很乾淨。

所以像這樣做:

long updatetId = database.update(<tableName>, values, <column> + " = ?", 
           new String[] {inFileRevision.mFileName}); 


注:如果你想用你的方法,你需要使用'稱爲單引號