5

sqlite3_open_v2 関数に問題があります。OSはWindowsで、Qt Creatorで開発しています。

sqlite3_open("database.db", &db); // works fine

しかし

sqlite3_open_v2("database.db", &db, SQLITE_OPEN_READWRITE, ""); // don't work

utf-8 コーディングの問題ではないと確信しています。最初の関数が正常に動作し、プロジェクト プロパティでコーディングを変更しようとしたためです。最初の引数のファイルパスに問題がある可能性があります。絶対パスも機能しませんでした。

この機能を使用するアイデアと例はありますか?

4

2 に答える 2

6

回答ありがとうございます。

問題は最後のパラメーターにありました。"" の代わりに 0 または NULL でなければなりません

以上です、とにかくありがとう

于 2012-05-28T21:36:02.887 に答える
4

これは、ファイルが作業ディレクトリに存在しないことが原因であると考えられます。確実に sqlite3_open_v2 を呼び出す直前に、現在の作業ディレクトリのパスを出力するコードを追加します。

SQLITE_OPEN_READWRITE を使用した sqlite3_open と sqlite3_open_v2 の違いの 1 つは、ファイルが見つからない場合に最初のものが空のデータベースを作成するのに対し、2 つ目は作成しないことです。

sqlite3_open_v2 でデータベースを作成できるようにするには、次を使用する必要があります。

sqlite3_open_v2("database.db", &db, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL );

詳細については、ドキュメントを参照してください: http://www.sqlite.org/c3ref/open.html

于 2012-05-28T11:50:39.163 に答える