Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 即使成功打开数据库,sqlite_prepare_v2也会给出错误#26(文件不是数据库)_C++_Sqlite - Fatal编程技术网

C++ 即使成功打开数据库,sqlite_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

我试图在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;
}
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安装库。