ODBCに32bit用・64bit用が、それぞれ存在する理由を知りたいです。
質問の背景
先日、Windows7 32bit上で動くことを想定して開発された業務アプリを、Windows10 64bit上でも動くようにセットアップする、という業務を行いました。
以前にも、同様の業務アプリをWindows7 32bit上にアプリを展開する作業を行ったことがあります。そのため、今回も以前とほぼ同じ手順で行けると高を括っていたのですが、ODBCの設定を行う段階でODBCに32bit用と64bit用があることに気付き、どちらを使って良いのか分からなくなりました。
自分で色々と試してみたところ、32bit用ODBCを使うとデータベースと接続できるのに、64bit用ODBCではデータベースと接続することができませんでした。
上長に確認したところ、32bit用を使うのが正しいということでしたので、その後、作業自体は問題なく完了したのですが、結局ODBCが2種類ある理由、また、32bit用でないと動かない理由が分からないでいます。
予想
ODBCはプログラムからデータベースに接続するのを助ける仕組み――インターフェースであるという認識しています。
それはつまり、プログラムからODBCに向かって「○○○という処理をデータベースに実行させてたいから、上手いことやっといて」と命令し、ODBCは受け取った命令をデータベースに理解できるよう変換している……といったイメージを持っています。
そうなると、ODBCが32bit用と64bit用に分かれているのは、プログラムからODBCに対して同じ命令を送ったとしても、命令の内容――内部的なデータに違いがあるのではないかと考えています。
例えば……
SQL
1SELECT 2 * 3FROM 4 table_1 5;
……というクエリを実行したいとき、32bitアプリからODBCに対して命令を発するとデータ的には「AAccEEgg」として送信されます。対して、64bitアプリから命令したときは内部的には「bbDDffHH」といった具合に変換されて送られるのではないかと考えています。
そのため受け取ったODBC側では命令を正常に読み解けない――言うなれば文字化けのような現象が起きてしまうので、32bit用64bit用とでODBCが分かれているのではないかな、と予想しています。
質問事項
改めまして、ODBCに32bit用・64bit用がそれぞれ存在するのは何故なのか、1種類に絞ることはできなかったのか、1種類に絞ることは可能だが利便性の観点からわざと分けているのか、といったことをお聞きしたいです。
また、「そもそもODBCに対する理解が間違っている」や「32bit/64bitの違いが分かっていない」等の上記質問とは直接的に関係のない点についてもご指摘頂けますと、勉強する際の取っ掛かりになりますので、何かありましたら、ご回答に含めて頂けると幸いです。
以上、長くなりましたが、ご回答のほど、よろしくお願いします。
回答3件
あなたの回答
tips
プレビュー