2017-01-08 64 views
0

我在我的C++程序中使用sqlite3,並試圖在 sqlite3_get_table函數中運行SQL字符串。SQL String錯誤?沒有這樣的列

這是我的sql字符串。

SELECT name FROM sqlite_master WHERE type='table' AND name=test_table; 

我不斷收到錯誤「no such column」test_table「」。

我想要做的是確認我的數據庫中存在一個表。就這樣。 任何關於我的字符串有什麼問題的線索。

+3

你的調令是含糊不清的字符串中使用引號。您發佈的內容不是有效的C++字符串(因爲雙引號沒有轉義),也不是有效的SQL字符串,因爲它不能以雙引號開頭。 – Dai

回答

3

在SQLite的雙引號( '"')是在標識轉義字符,所以假設這是你的SQL(原始SQL,無關C++):

SELECT 
    name 
FROM 
    sqlite_master 
WHERE 
    type = 'table' 
    AND 
    name = "test_table;" 

相當於:

... 
name = test_table 

......這顯然不是你想要的。

你應該在SQL中使用單引號字符串,並且語句終止分號應在最後走:

SELECT 
    name 
FROM 
    sqlite_master 
WHERE 
    type = 'table' 
    AND 
    name = 'test_table';