.Net Framework 3.5 で開発したアプリケーションを Windows 10 64 bit で
実行し、ODBC(32bit)でデータベースアクセスしようとしたときに発生しました。
原因としては、アプリケーションの実行が64bitであるにも関わらず、
ODBCが32bitのため、このエラーメッセージが発生しました。
・アプリケーション:64bit
・OS:64bit
・ODBCドライバ:32bit
こんな状態です。アプリケーションとODBCドライバのアーキテクチャ(bit数)を
一緒にする必要があるようです。
対策は、32bitアプリケーションとして実行するように、ビルドオプションを変更しました。
プラットフォームターゲットが
・Any CPU の場合、OSのアーキテクチャによって32bitや64bitに変更されます。
・x86 の場合、OSのアーキテクチャによらず、32bitで実行されます。
・x64 の場合、OSのアーキテクチャによらず、64bitで実行されます。
ちなみに、実行時のbit数が32bitか64bitかを取得するソースを紹介します。
/// <summary>
/// 実行時のアーキテクチャが32Bitか64Bitかを判断する
/// </summary>
/// <param name=processBit></param>
/// <returns></returns>
public static int GetRunningArch(out string processBit)
{
processBit = "";
try
{
if (IntPtr.Size == 4) processBit = "32bit";
else processBit = "64bit";
return 0;
}
catch
{
return 9;
}
}
おすすめ本 c#コードレシピ集
c#コードレシピ集は、「文字列を大文字あるいは小文字に変換したい」や「Taskをキャンセルしたい」など逆引き的にコードの書き方を調べられるレシピ集です。
2021年8月に発売された本で、全部で385個のレシピが収録されています。
ジャンルは日付処理やLINQ、並列処理と非同期処理など幅広く記載されています。
Kindle対応ですので、まずはサンプルをダウンロードして何が書かれているか確認してはいかがでしょうか。
リンク
コメント