
いつもお世話になっております。
以下のC#のプログラムを
windows 7 home premium(x64)
visual studio 2008 express edtion (x86)
でビルドして実行すると
一番最後の行(da.Fill(dt);)のところで
ERROR [IM002] [Microsoft][ODBC Driver Manager] データ ソース名および指定された既定のドライバーが見つかりません。
という例外がでます。
//CSVファイルのあるフォルダ
string csvDir = @"D:\";
//CSVファイルの名前
string csvFileName = "test.csv";
//接続文字列
string conString = "Driver={Microsoft Text Driver (*.txt; *.csv)};Dbq="
+ csvDir + ";Extensions=asc,csv,tab,txt;";
System.Data.Odbc.OdbcConnection con =
new System.Data.Odbc.OdbcConnection(conString);
string commText = "SELECT * FROM [" + csvFileName + "]";
System.Data.Odbc.OdbcDataAdapter da =
new System.Data.Odbc.OdbcDataAdapter(commText, con);
//DataTableに格納する
DataTable dt = new DataTable();
da.Fill(dt);
たしかにスタート->コントロールパネル->管理ツール->データソース(ODBC)の
ドライバーの欄を見るとMicrosoft Text Driverが入っていません。
しかし、
C:\Windows\SysWOW64\odbcad32.exe
を実行してドライバーを見ると
Microsoft Text Driver (*.txt; *.csv)
が入っているので、32ビットのほうには入っていると思っています。
下記サイトに以下のような記載があるのですが、
http://technet.microsoft.com/ja-jp/windows/gg182 …
-----------------------------------------------------------------------
データベースに接続する構成ができずにデータベースに接続できないといったことが起こります。しかし、32 ビットと 64 ビットの特性を正しく理解できれば、「%windir%\SysWOW64\odbcad32.exe」へアクセスすることで今まで通り ODBC ドライバを扱うことができます。
-----------------------------------------------------------------------
%windir%\SysWOW64\odbcad32.exeにアクセスするようにするには、
どのようなプログラムを書けばよいのでしょうか。
どなたかご教授よろしくお願いいたいます。
No.1ベストアンサー
- 回答日時:
デフォルトの設定は AnyCPU という設定になっていて、
実行環境が 64bit なら 64bit アプリケーションとして
実行環境が 32bit なら 32bit アプリケーションとして
動作するようになっているようです。
なので、
コントロールパネル->管理ツール->データソース(ODBC)
のデータソースの方を参照しているのでしょう。
Standard 以上の Edition であればプロジェクトのプロパティで
AnyCPU/x86(32bi)/x64(64bit)
などから選択できるようになっていますが、Express Edition では選択できない(該当する項目がない)ようです。
http://msdn.microsoft.com/ja-jp/library/5b4eyb0k …
ですが、Express Edition であっても .csproj ファイルの
<PropertyGroup ~ >
・・・
</PropertyGroup>
の中の
<PlatformTarget>AnyCPU</PlatformTarget>
を
<PlatformTarget>x86</PlatformTarget>
に書き換えれば(なければ追加)32bit 固定になり、64bit 環境でも 32bit アプリケーションとして動作するようになるらしいです。
tsukasa-12rさん ご返答ありがとうございます。
csprojをテキストエディタで開いて編集しようとしたところ
<PropertyGroup>...
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
というような箇所が3箇所あったのですべて
AnyCPU->x86と直してプロジェクトを開いたのですが、ビルドされなくなってしまいました。
Expressエディションはできないのかもしれません。
Standard 以上の Edition であればプロジェクトのプロパティで
AnyCPU/x86(32bi)/x64(64bit)
でできるということですので、試しては無いのですが、解決といたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
JavaScriptでコマンドプ...
-
Access クエリ実行が急に非常に...
-
jarの開き方を教えてください。
-
OLE又はDDEを使うVISUAL BESIC...
-
batからexeを起動した際の戻り...
-
ASPからexeプログラムへ引数
-
アプリで作成したexeファイルを...
-
Eclipseでインポートしたファイ...
-
VBAでEXEファイルを動かす方法...
-
LINK : fatal error LNK1104に...
-
タスクスケジューラからのBA...
-
Winでコマンドプロンプトを出さ...
-
LAN接続された外部フォルダに出...
-
以下のように複数のファイルを...
-
64bit環境で32bitのodbc参照
-
eclipseで作ったプログラムを他...
-
コマンドプロンプトにてスター...
-
WinmostarでWinGAMESSがうごか...
-
batからexeを実行し戻り値を受...
-
ファイル名の先頭が数字だと駄...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Access クエリ実行が急に非常に...
-
OLE又はDDEを使うVISUAL BESIC...
-
c/c++ ビルドしたにもかかわら...
-
VBAで他のプログラムが起動して...
-
コマンドプロンプトで外のexeや...
-
VBAでEXEファイルを動かす方法...
-
コンポーネント`MSCOMM32.cox'...
-
JavaScriptでコマンドプ...
-
VC++から引数付きexeファイルの...
-
JAVA .jarファイルに再圧縮する...
-
jarの開き方を教えてください。
-
WScript.Echo と msgbox
-
実行ファイルと実行モジュール...
-
以下のように複数のファイルを...
-
ネットワーク越しのEXEファ...
-
JAVAでつくったプログラムはコ...
-
LINK : fatal error LNK1104に...
-
Winでコマンドプロンプトを出さ...
-
VBAでMP3を鳴らしたい
-
VB6で、C言語の(argv,argc)み...
おすすめ情報