即使数据库成功打开,sqlite_prepare_v2也会出现错误#26(文件不是数据库)

时间:2018-05-06 05:05:07

标签: c++ sqlite

我正在尝试在VC ++中使用sqlite3_prepare_v2()但是它给了我错误#26,它是"文件不是数据库。"这是令人困惑的,因为我已成功打开数据库。

sqlite3 *testDb;
sqlite3_initialize();
std::string location =  uribase+"testDB.sqlite3";
auto rc = sqlite3_open_v2(location.c_str(), &testDb, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL);
if (rc != SQLITE_OK)
{
    logError(rc);
    sqlite3_close(testDb);
    sqlite3_shutdown();
    return -1;
}
else
{
    std::cout << "Database opened successfully.";
}
std::string tableName = "test";

std::string strstmt = "SELECT * FROM " + tableName + ";";
sqlite3_stmt *pstmt = NULL;
rc = sqlite3_prepare_v2(testDb, strstmt.c_str(), -1, &pstmt, NULL);
if (rc != SQLITE_OK)
{
    logError(rc);
    sqlite3_close(testDb);
    sqlite3_shutdown();
    return -1;
}

Output

1 个答案:

答案 0 :(得分:2)

SQLite在实际需要之前不会访问该文件。 (无论如何,在打开文件后,另一个应用程序可能会破坏文件。)

问题是该文件确实不是数据库文件(或加密)。