0

sqlite を使用して C でデータベースを作成しました。コードは次のとおりです。

int x = sqlite3_open(argv[1], &db);

argv[1]データベースの名前を含む引数です。データベースは .db で終わるファイルに保存する必要があると思いますが、そのファイルが見つかりません。

上記のファイル(データベースの構造を含むファイルなど...)はどこにありますか?

4

4 に答える 4

1

ファイルは、パスが指定された場所、またはプログラムが実行されていた場所 (C:\Users\User Nameディレクトリなど) に作成されます。

拡張子は必ずしも必要ではありません.db。つまり、任意の名前のファイルを作成できます。それを見つける必要がある場合は、特定の時間間隔で作成されたファイルを探してみてください。

最良のオプションは、常にフル パスを指定し、.sqlite または .db 拡張子を持つファイルを作成することです。

于 2012-10-20T17:38:28.757 に答える
1

sqlite3_open は次のように定義されます

int sqlite3_open(
   const char *filename,   /* Database filename (UTF-8) */
   sqlite3 **ppDb          /* OUT: SQLite db handle */
);

したがって、最初の引数に入力したものは何でもデータベースが呼び出されます。.db サフィックスは自動的に追加されません。

ファイルが保存されたディレクトリについては、ファイルが保存される場所である argv 1に絶対パスを指定した場合、そうでない場合は現在の作業ディレクトリにある必要があります。

本当にそのファイルを元に戻す必要があり、それが期待した場所になく、.db 拡張子がなく (指定するのを忘れたために)、付けた名前を思い出せない場合は、最後の可能性があります: を参照してください。sqlite ファイル形式の仕様では、sqlite ファイルは常に "SQLite 形式 3\000" (ヌル終了文字列) で始まります。

find / -exec grep -l "SQLite format 3" {} \;

これにより、その文字列を含むすべてのファイルの名前とパスが出力されますが、そのコマンドには時間がかかります...

于 2012-10-20T17:39:07.813 に答える
0

sqlite3_openデータベースを作成すると記載されていますが、データベースに変更を加えるまで、SQLite は実際にはファイルを作成しません。

ファイルが確実に作成されるようにテーブルを作成します。

于 2012-10-20T19:52:31.460 に答える
-1

Linuxを使用している場合は、このように端末で「locate」コマンドを使用できます

locate *.db

/ディレクトリにあります。あなたは場所を取得します

于 2012-10-20T17:37:33.490 に答える