2012-08-10 98 views
2

這條線,mDatabase.execSQL(sql);,使我有以下錯誤:SQLite的刪除語法錯誤

{ sqlite returned: error code = 1, msg = near "*": syntax error } 
    for Delete * from table_name Query 

我的SQL查詢:DELETE * FROM table_name

我該如何解決這個問題?

+0

ü可以把你的日誌貓在這裏.. – Sumant 2012-08-10 11:15:21

+0

我無法現在附加日誌貓,但我需要告訴你一件事,那就是聲明mDatabase.execSQL(sql);對於如下查詢正常工作:DELETE FROM table_name WHERE key = 2。但是對於這個DELETE * FROM table_name只有這個不起作用。我正在使用sql密碼庫(jar)進行數據庫操作。提前致謝。 – Vishnu 2012-08-10 12:00:33

回答

5

DELETE * FROM table_name是一個錯誤的sql命令。使用DELETE from table_name

+0

出於一個簡單的原因,您只能刪除該行,而不是一組*表示的某一列。 – andig 2012-08-10 11:26:23

+0

我需要刪除完整的表,根據您的查詢,我們可以只刪除一行,我們需要使用WHERE子句和一些主鍵值。 – Vishnu 2012-08-10 11:55:53

+0

使用此查詢沒有地方,你刪除表中的所有行 – 2012-08-10 12:05:38

0

語法錯誤意味着您的語句基本拼寫錯誤,無法解析。在這種情況下,錯誤消息指出發生這種錯誤的位置 - 在「*」字符上。在這種情況下,您應該訪問數據庫文檔並檢查您嘗試使用的命令的正確語法。在SQLite的情況下,它是here。你可以在那裏找到關於DELETE語句的文檔,here是鏈接。它以圖形方式向您顯示語法(稱爲syntax diagrams或鐵路圖),應該很容易遵循。 在這種情況下,如前所述,您不能在DELETE和FROM之間指定「*」。這是因爲您總是刪除整行,並且無法刪除單個選定的列。

+0

謝謝,我明白了,但現在我正在使用sql密碼庫(jar)進行數據庫操作。有沒有什麼辦法可以找到這個sqlcipher.jar將支持這種類型的查詢。 – Vishnu 2012-08-10 12:09:21

+0

如果我正確理解這一點,sqlchipher不應該以任何方式影響sql查詢,它應該支持與正常SQLite相同的查詢(和相同的語法)。 – 2012-08-10 12:17:30

+0

好吧,感謝您的回覆,那麼爲什麼我只爲這個查詢得到這個錯誤的特殊性。對於DELETE FROM table_name WHERE key = 3,它工作正常,它只給出DELETE * FROM的錯誤。我使用相同的mDatabase.exceSQL(sql)相同的語句來執行所有查詢。任何其他方式來解決這個問題。 – Vishnu 2012-08-10 12:47:11

0

如果您需要刪除整個表,你可以使用然後DROP TABLE如果不存在重新創建表

+0

謝謝。根據Krzysztof Adamski的話我解決了這個問題。非常感謝您寶貴的時間。 – Vishnu 2012-09-10 12:50:25