什么时候SQLite语句“PRAGMA database_list;”返回一个空结果集?

时间:2013-11-25 16:08:13

标签: c sqlite

使用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没有多少经验我现在被困住了......这里可能出现什么问题?

1 个答案:

答案 0 :(得分:0)

sqlite3_prepare_v2的第四个参数是指向语句指针的指针,因此它不能是pCompiledSql而是&pCompiledSql

您的编译器应该已经警告过您。