Sqlite'无法识别的令牌:“:”C++
问题描述:
我不知道该怎么办,因为我无法从我的SQL字符串中删除冒号。 基本上我试图使用下面的代码在Sqlite中执行一个SQL字符串。Sqlite'无法识别的令牌:“:”C++
string database_name = "C:/Programs_C++/Project/Databases/dbase.db";
string exec_string = "SELECT * FROM " + database_name + " WHERE type='table'";
dbase_return=sqlite3_open_v2(database_name.c_str(),&db_handle,SQLITE_OPEN_READWRITE,NULL);
dbase_return_tbl=sqlite3_get_table(db_handle,exec_string.c_str(),&result,&row,&column,&error_msg);
//But I get the error: unrecognized token: ":" ?
我该如何解决这个问题?谢谢
答
它看起来像你有URI filenames接通 - 这可以在编译时或运行时完成(如果你不知道它可能编译时间)。
如果URI的文件名被开启,您需要将文件名更改为类似:
file:///C:/Programs_C++/Project/Databases/dbase.db
编辑:如果您想将其关闭,我不认为你可以为这一个做呼叫(因为呼叫将标志作为参数的一部分,只能将其打开)。相反,您可以通过调用
sqlite3_config(SQLITE_CONFIG_URI, 0)
来全局禁用它,它告诉sqlite全局禁用URI文件名约定。注意:你只需要调用一次,它不是线程安全的,所以可能只是在程序的开始就放置它。
但是,在完全关闭URI文件名之前,如果URI文件名对您有用,可能值得研究。
答
您可以SELECT
从表,而不是从一个数据库。
首先打开数据库(使用文件名),然后执行一个有效的SQL语句像
SELECT * FROM myTable;
SELECT * FROM C:/Programs_C++/Project/Databases/dbase.db WHERE type = 'table'
不是有效的SQL。如果你想获得所有表格的列表,你不能这样做。
'exec_string'在这里是不相关的,因为你没有使用它。 – immibis
更正..我离开了一条线..谢谢 – domonica
我有一个名为dbase.db的数据库..你能详细说明吗?我应该在这里写什么?我可以看到我现在可能有这个错误。这种方式不能从D'base中选择表格吗?你知道我应该怎么做吗?谢谢 – domonica