C++ 即使成功打开数据库,sqlite_prepare_v2也会给出错误#26(文件不是数据库)
我试图在VC++中使用sqlite3_prepare_v2(),但它给了我错误#26,即“文件不是数据库”。这让人困惑,因为我已成功打开数据库C++ 即使成功打开数据库,sqlite_prepare_v2也会给出错误#26(文件不是数据库),c++,sqlite,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_O
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;
}
sqlite3*testDb;
sqlite3_初始化();
std::string location=uribase+“testDB.sqlite3”;
auto rc=sqlite3_open_v2(location.c_str(),&testDb,SQLITE_open_READWRITE | SQLITE_open_CREATE,NULL);
如果(rc!=SQLITE_OK)
{
对数误差(rc);
sqlite3_关闭(testDb);
sqlite3_shutdown();
返回-1;
}
其他的
{
std::coutSQLite在实际需要之前不会访问该文件。(在任何情况下,打开文件后,另一个应用程序都可能损坏该文件。)
问题是该文件实际上不是数据库文件(或加密)。是的,实际上我刚刚注意到该问题特定于此特定数据库文件。它未加密或损坏,因为我可以使用SQLite Administrator()编辑和访问它与任何其他数据库文件一样。您使用的是哪个版本的SQLite库?我使用的是3.21.0-1版,如果有必要,我使用vcpkg安装库。