OS:Windows7
Visual Studio2012Professional
いつもこちらでお世話になっています。
OleDbプロバイダーのOleDbDataAdapterでAccessファイルからDataSetへデータを取込む作業をしています。
下記のコードで、一度はDataSetへデータを取り込めたのですが、接続文字列を変更したところ、変更前の接続文字列(パス)を参照に行ってしまいエラーになります。
リビルドしたり、プロジェクトを作成し直したりしましたが、やはり変更前の接続文字列を使用してしまいます。
【コード】
private void Form1_Load ( object sender, EventArgs e ) {
string connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\hoge変更後\○○.mdb;"
string sql = @"SELECT * FROM Table;";
DataSet ds = new DataSet();
OleDbConnection cn = new OleDbConnection();
cn.ConnectionString = connectionString;
OleDbCommand cmd = new OleDbCommand();
using (OleDbDataAdapter da = new OleDbDataAdapter()) {
cmd.Connection = cn;
cmd.CommandText = sql;
da.SelectCommand = cmd;
da.Fill( ds ); ← ここで『System.Data.OleDb.OleDbException』エラー
}
this.dataGridView.DataSource = ds.Tables[0];
}
【エラー】
System.Data.OleDb.OleDbException はハンドルされませんでした。
HResult=-2147467259
Message=パス 'D:\hoge前\○○.mdb' は正しくありません。パス名に間違いがないことと、ファイルが置かれたサーバーに接続していることを確認してください。
Source=Microsoft JET Database Engine
ErrorCode=-2147467259
どなたか原因がおわかりになりますでしょうか。
どうぞよろしくお願いいたします。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
>>それでもどこかに古いパスが残っているのかも知れないと、念のためプロジェクト全体を検索しましたが、どこにも見つかりませんでした。
プロジェクト全体ではなく、ソリューション全体で検索してみてはどうでしょう?ただ、プログラムが1プロジェクトのみで構成されているなら、これは関係ないですけどね。
また、ソリューションユーザオプションの *.suo も削除してみてください。
それから、どこかのテキストファイルの中にパスを記録しているのかもしれませんので、ディレクトリ以下のファイルを全てテキスト検索してみるのもいいかと思います。(私の使っているPeggyPro for PHPエディターは、サブディレクトリーまで検索してくれますので、こういう検索時に役立っています)
どうしてもダメなら、別ディレクトリの下に、作成したソリューションのディレクトリやファイルをコピーして、不要なファイル(怪しいと思うファイル)を削除してビルドし、動作がどうなるか?を確認してみるのも価値があると思います。そのディレクトリー下には、本来、古いパスの情報が無いはずですから、たとえエラーが発生しても古いパスが表示されなくなるはずですのでね。
基本的に、.Net Frameworkで作成したプログラムはレジストリ登録不要で動作しているはずですので、プロジェクト(ソリューション)ディレクトリの下に全情報があると思っています。どこかに古いパスが残っていると思います。
この回答への補足
lv4uさん、たびたびありがとうございます。
全てのディレクトリで接続文字列を検索しましたが、見つかりませんでした。
バイナリ変換されている気もしますが。
ひとつ気になった点があります。
[新しいデータソースの追加]-[データソース構成ウィザード]に、古いデータ接続(接続文字列も含む)が表示されています。
これは新規にソリューションを作成しても、規定値のように表示されます。
この古いデータ接続情報は、ウィザードでは削除できません。
Visual Studioは、このデータ接続情報をどこに保持しているのでしょう...
No.1
- 回答日時:
エラーメッセージが「パス名に間違いがないことと、ファイルが置かれたサーバーに接続していることを確認してください。
」っていうことですので、AccessのMDBファイルの場所が正しく認識されていないのだと思えます。(私はC#でAccessファイルを使っていますが、先日、同様のエラーが出ました。)たぶん、データセットのソースかどこかを探せば、古いパスが残っていると思いますので、それを検索して、正しいパスに修正してあげれば、直ると思います。
Visual Studio (VS)は、メタ・プログラミングの考え方を取り入れて、私たちの入力に反応して、ソースコードを色々と生成してくれています。クリーンな状態からソースコードを生成される場合は、問題が起こりにくいですけど、今回のように、一応出来上がった後に、一部を修正したような場合、関連するソースコードがうまく生成・修正されないことがあります。ある意味、VSのバグといえるかもしれませんね。
自動生成されたソースコードには、「このコードを変更しないでください」みたいなコメントが入っていると思いますけど、リビルドでは解決せず、その警告を無視して、生成されたソースコードを削除・修正してあげないと解決できないことがありますので、VSを使うときには、注意が必要みたいです。
ちなみに、上記の問題以外でも、「なんでエラーが解消されないの?自分の入力したコードに間違いは無いはずなのに?リビルドしたのに?」と思うことが何度かあって、問題のある自動生成ソースコードを探すのに時間とられました・・・。
この回答への補足
lv4uさん、回答いただきありがとうございます。
今回作成したコードについて補足します。
私もVisual Studioに自動生成させた際のデメリットとしてlv4uさんがおっしゃられる点を感じています。
そのため、今回は自動生成を行っておりません。
それでもどこかに古いパスが残っているのかも知れないと、念のためプロジェクト全体を検索しましたが、どこにも見つかりませんでした。
しかしエラーに記されているパスは古いものですので、どこかに古いパスが残っているはずなのです。
一からプロジェクトを作成し直しても同じエラーになるので、Visual Studioはどこにその古いパスを隠し持っているのかが分かりません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルVBAで一つ上の階層...
-
エクセルvbaでdocuworksprinter...
-
Excel 相対パス
-
VBS パスに変数を入れたい
-
fopenでのパス指定
-
C# MP4のタグ情報のサブタイト...
-
【VBA】ExcelマクロでCSVファイ...
-
A列に記載されているフォルダ...
-
C++でネットワークパスのファイ...
-
ExcelVBAの使い方 ¥の使い方...
-
Excel2010VBAでエラーが出る相...
-
(GCCコンパイラ)動的リンクを絶...
-
コマンドプロンプトのコピー関...
-
フルパスからファイル名取得の方法
-
【Excel VBA】Power Qurry のソ...
-
指定したフォルダ内の最新ファ...
-
エクセルのファイルオープン時...
-
エクセルのマクロで特定フォル...
-
【VBA】複数のtxtファイルから...
-
Cの関数で自分自身のパス取得
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルvbaでdocuworksprinter...
-
Excel 相対パス
-
xcopyコマンドの進行状況を表示...
-
エクセルのマクロで特定フォル...
-
エクセルVBAで一つ上の階層...
-
【VBA】ExcelマクロでCSVファイ...
-
コマンドプロンプトのコピー関...
-
A列に記載されているフォルダ...
-
ExcelVBAの使い方 ¥の使い方...
-
EXCEL(VBA)で指定フォルダ内の...
-
【VB.NET】App.configにファイ...
-
SaveAsの保存先について
-
outlook開けない
-
Eclipse
-
VBAでパワーシェルを実行したい...
-
fopenでのパス指定
-
指定したフォルダ内の最新ファ...
-
開いているファイルを削除し、...
-
VBA★PDFをPDFアプリで印刷し...
-
ExcelのVBAで上書き保存を確...
おすすめ情報