OpenFileDialog-> DialogShow()の結果は、SQLiteの中でエラーを引き起こします
-
25-09-2019 - |
質問
私はSQLiteのを使用してデータベースにアクセスするプログラムを持っています。
:私はSQLiteの呼び出しを行う前に、私はOpenFileDialogやSaveFileDialogを開くとresult = sqlite3_prepare_v2(databaseConnection,converted,10000,&stmt,&strptr);
と「キャンセル」を選択し、すべての作品大丈夫(result == SQLITE_OK
)しかし、ときに私は、ダイアログの戻りファイルと何もしない場合でも、私は、「開く」を選択し、それブレイク(result == SQLITE_ERROR
)。あなたはこれが起こっされる可能性がありますなぜ任意のアイデアを持っていますか?
そんなにお時間をありがとう!
EDITます:
:ここで私が使用しているコードがありますOpenFileDialog^ openFileDialog1 = gcnew OpenFileDialog;
openFileDialog1->ShowDialog();
sqlite3_stmt * stmt;
const char * strptr;
sqlite3 * databaseConnection;
int result = sqlite3_open("virtualpatient_chat.db", &databaseConnection);
if (result != SQLITE_OK) return;
result = sqlite3_prepare_v2(databaseConnection,"SELECT * from mappings;",10000,&stmt,&strptr);
if (result != SQLITE_OK) return;
不思議なこと、それは私の現在のプロジェクトでは動作しませんが、私はコピーして貼り付け、それを新しいプロジェクトに、エラーが繰り返されません。今、私はちょうど私の周囲のコードに問題が何ができるかを把握しようとしている...
解決 2
私は最終的にそれを修正する方法を考え出しました。私のダイアログボックスの[プロパティ]の下で、私がtrueにRestoreDirectoryプロパティを設定する必要がありました。私はかなり確実それはそれは、SQLiteのは、私のデータベースファイルを見つけることができないようにディレクトリを変更することで、何とかしない限り、それを修正する方法はないよ。
あなたの助けをありがとう!
他のヒント
質問から、問題の原因を診断する見込みはありません。ただ、いくつかのポインタます。
TrueにOpenFileDialogのRestoreDirectoryを設定することで、スタート。 [開く]をクリックすると、プログラムの作業ディレクトリを変更しないことをこれが保証されます。それがはたらく場合、クエリでは、現在のディレクトリ上ではなく、神秘的な依存関係があります。
心配する次の事を約ダイアログを使用するときに読み込まなっているDLLです。プロジェクト+プロパティは、[デバッグ]タブでは、ダニ、「アンマネージコードのデバッグを有効にします」。ダイアログを開いたときに出力ウィンドウをチェックし、それが注入されたばかりのDLLの一覧を表示します。これらは、SQLiteのと競合する可能性のあるそれらの1つのシェル拡張です。そのような拡張は、多分メモリを破損またはSQLiteの自分自身を使用して超えてやるかもしれないものは本当の手がかりはありません。あなたはSysInternalsの自動実行ユーティリティを使用して、一時的に無効にシェル拡張をすることができます。マイクロソフトで書かれていないものと起動します。