2017-02-17 42 views
-3

Error Code : 1 (SQLITE_ERROR) Caused By : SQL(query) error or missing database. (near "=": syntax error (code 1): , while compiling: DELETE FROM notesWHEREid='1')如何解決SQL(查詢)缺失的數據庫錯誤?

這是我收到的錯誤:

這是我的數據庫處理程序的一部分,它是此錯誤的來源:

public void deleteNote(String id) { 
    SQLiteDatabase db = this.getWritableDatabase(); 
    String deleteQuery="DELETE FROM " + DatabaseValues.TABLE_NOTES + "WHERE" + DatabaseValues.NOTES_ID + "= '" + id + "'"; 

    db.execSQL(deleteQuery); 
    db.close(); 
} 
+2

在執行它之前查詢權是什麼?請學習調試您的代碼。如果不知道如何去做,你不會走得太遠。 –

+0

@juergend沒有說出真實的話!!! :) –

+0

看看使用參數。 – Bugs

回答

1

更改下面的語句:

String deleteQuery="DELETE FROM " + DatabaseValues.TABLE_NOTES + "WHERE" + DatabaseValues.NOTES_ID + "= '" + id + "'"; 

String deleteQuery= "DELETE FROM " + DatabaseValues.TABLE_NOTES + " WHERE " + DatabaseValues.NOTES_ID + " = '" + id + "'"; 

其實你正在將表名和where子句結合起來。你需要在WHERE子句之前和之後添加一個空格,如「Where」

希望它有幫助。

2

如果您正在使用C#6.0,使用插值字符串使生活字符串拼接更容易,避免了這種無聊的錯誤:

String deleteQuery= $"DELETE FROM {DatabaseValues.TABLE_NOTES} WHERE {DatabaseValues.NOTES_ID} = id"; 

注意:$運營商在C#6.0可用。你也應該看看how to build parameterized queries,因爲像這樣傳遞參數可以讓你暴露SQL injection

+0

@CamiloTerevinto - 是的,我知道。這就是爲什麼我已經把參數化查詢的鏈接。 – Alexei

+0

@CamiloTerevinto - 這不完全是真的,因爲有些人設法使它在早期版本的Visual Studio中工作([來源](http://stackoverflow.com/questions/27093908/how-to-enable-c-sharp -6-0-feature-in-visual-studio-2013))或者甚至沒有Visual Studio([source](http://stackoverflow.com/questions/27093908/how-to-enable-c-sharp-6- 0-特徵在視覺工作室-2013))。 – Alexei

相關問題