W poniższym kodzie pathToNonDatabase
jest ścieżką do prostego pliku tekstowego, a nie prawdziwą bazą danych SQLite. Miałem nadzieję, że to wykryje sqlite3_open
, ale nie ma (db
nie jest NULL
i result
jest SQLITE_OK
). Jak wykryć, że plik nie jest prawidłową bazą danych sqlite?Jak stwierdzić, czy plik bazy danych SQL jest prawidłowy czy nie
sqlite3 *db = NULL;
int result = sqlite3_open(pathToNonDatabase, &db);
if((NULL==db) || (result!=SQLITE_OK)) {
// invalid database
}
"pragma schema_version;" czasem wyrzuca błąd "baza danych jest zablokowana". Dam ci "pragma quick_check;" a spróbuj –
Jeśli twoja baza danych jest zablokowana, jest zablokowana. Wszystko zawiedzie. Spróbuj ponownie, gdy nie jest zablokowany. :) –
Masz rację. Wszystko zawiedzie, gdy baza danych jest zablokowana. Nawet wybiera. W moim przypadku chciałem ustalić, czy plik jest bazą danych Sqlite3. Jeśli otrzymam komunikat "baza danych jest zablokowana", myślę, że można bezpiecznie założyć, że plik jest bazą danych Sqlite3. –