我不知道该怎么办,因为我无法从SQL字符串中删除冒号。 基本上我正在尝试使用下面的代码在Sqlite中执行SQL字符串。
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: ":" ?
我如何解决这个问题?感谢
答案 0 :(得分:1)
您可以{strong> 表 SELECT
,而不是数据库。
首先打开数据库(使用文件名),然后执行有效的SQL语句,如
SELECT * FROM myTable;
SELECT * FROM C:/Programs_C++/Project/Databases/dbase.db WHERE type = 'table'
无效的SQL。如果您要获取所有表的列表,则不能这样做。
答案 1 :(得分:-1)
看起来你已经开启了URI filenames - 这可以在编译时或运行时完成(如果你不了解它,可能是编译时间)。
如果启用了URI文件名,则需要将文件名更改为:
file:///C:/Programs_C++/Project/Databases/dbase.db
编辑:如果你想关闭它,我不认为你可以为这一次调用做到这一点(因为调用带有一个标志作为参数的一部分,只能打开它)。相反,您可以通过调用
来全局禁用它sqlite3_config(SQLITE_CONFIG_URI, 0)
告诉sqlite全局禁用URI文件名约定。注意:你只需要调用一次并且它不是线程安全的,所以可能只是把它放在程序的开头。
但是,在完全关闭之前,URI文件名是否对您有用可能值得研究。