我正在尝试在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;
}
答案 0 :(得分:2)
SQLite在实际需要之前不会访问该文件。 (无论如何,在打开文件后,另一个应用程序可能会破坏文件。)
问题是该文件确实不是数据库文件(或加密)。