這條線,mDatabase.execSQL(sql);
,使我有以下錯誤:SQLite的刪除語法錯誤
{ sqlite returned: error code = 1, msg = near "*": syntax error }
for Delete * from table_name Query
我的SQL查詢:DELETE * FROM table_name
我該如何解決這個問題?
這條線,mDatabase.execSQL(sql);
,使我有以下錯誤:SQLite的刪除語法錯誤
{ sqlite returned: error code = 1, msg = near "*": syntax error }
for Delete * from table_name Query
我的SQL查詢:DELETE * FROM table_name
我該如何解決這個問題?
語法錯誤意味着您的語句基本拼寫錯誤,無法解析。在這種情況下,錯誤消息指出發生這種錯誤的位置 - 在「*」字符上。在這種情況下,您應該訪問數據庫文檔並檢查您嘗試使用的命令的正確語法。在SQLite的情況下,它是here。你可以在那裏找到關於DELETE語句的文檔,here是鏈接。它以圖形方式向您顯示語法(稱爲syntax diagrams或鐵路圖),應該很容易遵循。 在這種情況下,如前所述,您不能在DELETE和FROM之間指定「*」。這是因爲您總是刪除整行,並且無法刪除單個選定的列。
謝謝,我明白了,但現在我正在使用sql密碼庫(jar)進行數據庫操作。有沒有什麼辦法可以找到這個sqlcipher.jar將支持這種類型的查詢。 – Vishnu 2012-08-10 12:09:21
如果我正確理解這一點,sqlchipher不應該以任何方式影響sql查詢,它應該支持與正常SQLite相同的查詢(和相同的語法)。 – 2012-08-10 12:17:30
好吧,感謝您的回覆,那麼爲什麼我只爲這個查詢得到這個錯誤的特殊性。對於DELETE FROM table_name WHERE key = 3,它工作正常,它只給出DELETE * FROM的錯誤。我使用相同的mDatabase.exceSQL(sql)相同的語句來執行所有查詢。任何其他方式來解決這個問題。 – Vishnu 2012-08-10 12:47:11
如果您需要刪除整個表,你可以使用然後DROP TABLE如果不存在重新創建表
謝謝。根據Krzysztof Adamski的話我解決了這個問題。非常感謝您寶貴的時間。 – Vishnu 2012-09-10 12:50:25
ü可以把你的日誌貓在這裏.. – Sumant 2012-08-10 11:15:21
我無法現在附加日誌貓,但我需要告訴你一件事,那就是聲明mDatabase.execSQL(sql);對於如下查詢正常工作:DELETE FROM table_name WHERE key = 2。但是對於這個DELETE * FROM table_name只有這個不起作用。我正在使用sql密碼庫(jar)進行數據庫操作。提前致謝。 – Vishnu 2012-08-10 12:00:33