sqlite_prepare_v2 выдает ошибку № 26 (файл не является базой данных) даже при успешном открытии базы данных - PullRequest
0 голосов
/ 06 мая 2018

Я пытаюсь использовать sqlite3_prepare_v2 () в VC ++, но он выдаёт мне ошибку № 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;
}

выход

1 Ответ

0 голосов
/ 06 мая 2018

SQLite не будет обращаться к файлу до тех пор, пока ему это не понадобится. (И в любом случае, другое приложение может повредить файл после его открытия.)

Проблема в том, что этот файл действительно не является файлом базы данных (или зашифрован).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...