Windowsアプリのプログラミングで気になる現象があったので、メモしておきます。
開発環境は、C#、Visual Studio 2008、データベースはAccessです。
このアプリはデータベース接続情報を「○○.exe.config」ファイルに保持する形でプログラミングしました。
configファイルにデータベース接続情報を持つことにより、configファイルを編集するだけで接続先を変更できるようにするためです。
今回、間違ってconfigファイルを削除してしまい、Windowsアプリが動かなくなりました。
削除してしまっていたと気づいた時点で、「configファイルが見つかりません。」的な例外が発生してるんだろうなと思い、エラーログを確認してみると・・・
「ファイル ‘mdbのパス’ が見つかりませんでした。」
ん?
なんで?
configファイルがないのに、どこのmdbを参照してるわけ?
この例外おかしくない?
ログにはかれたmdbのパスは一体なんなんだ?と思いつつ、パスを確認してみました。
あっ。
実行ファイルと同じフォルダ内のmdbを参照しようとしてるみたいだ!
でも、そんなプログラム書いた覚えがありません。
ってことはconfigファイルから接続情報を読込む部分で自動で設定されているのかも。
さっそくプログラムを確認。
ありました!ありました!
「Settings.settings.cs」というファイルの中で「Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\\○○.mdb」という初期値がセットされてます。
「Settings.settings.cs」ファイルは自動生成されるファイルで、どうやら「Settings.settings」で設定した接続文字列を初期値として自動生成されるようです。
こんなとこでセットされてたんだなー。
ようやくスッキリしました。
【送料無料】C#によるプログラミングMicrosoft Windows(上) |
しかし、この手の参考書ってマジ高すぎだって。