使用C api和sqlite(v 3.7.13),我正在尝试列出当前连接的所有附加数据库:
sqlite3_stmt* pCompiledSql;
if(SQLITE_OK == sqlite3_prepare_v2(database, "PRAGMA database_list;", -1, &pCompiledSql, nullptr))
{
while(SQLITE_ROW == sqlite3_step(pCompiledSql))
{
const char* pName = reinterpret_cast<const char*>(sqlite3_column_text(pCompiledSql, 1));
const char* pFile = reinterpret_cast<const char*>(sqlite3_column_text(pCompiledSql, 2));
// Using pName and PFile...
}
}
其中数据库是附加了多个数据库的现有数据库的句柄。相同的代码适用于像“SELECT * FROM testtable”这样的语句。
然而,对于pragma调用,第一步调用将立即返回一个SQLITE_DONE。
我很确定我正在开发一些显而易见的东西,但是对SQLite没有多少经验我现在被困住了......这里可能出现什么问题?
答案 0 :(得分:0)
sqlite3_prepare_v2
的第四个参数是指向语句指针的指针,因此它不能是pCompiledSql
而是&pCompiledSql
。
您的编译器应该已经警告过您。