ファイルFが使用可能なSQLite3データベースであるかどうかを確認するための簡単なCプログラムを作成しています。
ファイルにジブリッシュを書き込もうとしましたが、0test.db
がsqlite3_open("test.db", &db)
返されました。
私はどちらかを推測するかsqlite3_status()
、sqlite3_db_status()
私がやりたいことをしますが、ドキュメントには別のことが記載されています。
このスレッドをチェックしてください。
sqlite3_open
ファイルがデータベースでなくてもSQLITE_OKを返すようです。ただし、ステートメントを実行しようとすると、SQLITE_NOTADBが取得されます。SELECT * FROM sqlite_master;
ヘッダーを読み取る代わりに、データベースを開いた後、SQLITE_NOTADBが返されるかどうかを確認するようなことを行うことができます。さらに一歩進んで、返されたデータを使用して、すべてのテーブルが存在することを確認できます。
ファイルは固定ヘッダーで始まる必要があります。有効なファイルを認識したい場合は、それで問題ありません。