2017-01-08 41 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';