2014年5月2日金曜日

64bit環境から32bitのODBC環境を呼び出そうとしてはまったお話

開発環境 WINDOWS7 Ultimate
eclipce pleiades
OFICE 2007
データベースをがっちり構築してツールを作るのではなくて
ACCESS のMDBをODBCでつつくぐらいで小回りのきくツールを作りたかったので
64bit環境下からODBCでACCESS_DBに接続しようとして却ってはまったの続き

さて、ODBC接続も作ったし、
String odbc_name = "ODBCの名前";
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
con = DriverManager.getConnection("jdbc:odbc:" + odbc_name,"","");
で繋がるかな~って実行してみたら…
これまたエラーで動かない…orz

これもあれこれ見てみると、
javaも64bitから呼び出すのは64bitのODBCなので、
32bitのODBCなんか知ったこっちゃないわよ 的なことのようだ
で、解決方法
eclipseに32bit用のjreを設定してやって、
プロジェクトも32bitで作るのが解決方法です

なんのこっちゃ、って感じですが、
まずは、32bitのjreをeclipceに設定してあげます

ウィンドウ(英語版だとwindow)から設定(英語版だとpreferences)を選びます


で、Javaの中にあるインストール済みのJRE(英語版だとInstalled JREs)を選択して 追加
 
 
 

標準VM(英語版だとStandarad VM)を選択してNEXT
 


JREホームは、32bitのJREはC:\Program Files (x86)\Javaの中にあるのでこれを選択
※私はjre7を落としていたのでこのフォルダを選択
 もしもなかったら、ORACLEのページからX86の方をダウンロードしてインストールしましょう
JRE名は何でも良いけど判り易くjre_32bitにしておきました。
 



続いて、プロジェクトの実行環境を32bitにします。

プロジェクトを右クリックして、設定(英語版だとproperties)
 

 

実行/デバッグ環境(英語版だとRun/debug settings)
対象のプロジェクトを選んで編集(Edit)

 JREタブから代替 JRE(英語版だとAltemate JRE)を選択
すると、先ほどインストールした32bitのJREが選択できるようになるので、選択⇒OK
 


これで、無事に32bitのデータベースにODBC接続できました\(^o^)/
まとめ
1.64bit環境で仕込んだeclipceで32bitのデータベースに接続するなら、
  32bitのJREがeclipceにインストールされている必要がある。
2.プロジェクトの実行環境を1でインストールした32bitのJREにしてやる必要がある。
ということのようです。

しかし、小回り利かせようと思って、お手軽にしようとした結果、
却って時間がかかる羽目に・・・orz

まあ、でも、いちいちデータベースの準備しなくても、
作ったjavaの実行環境とMDB準備して、
ODBC接続設定してやれば動くし…
データベースもACCESSで直接見ようと思えば手軽に見れるし…
ACCESS入ってなくてもランタイムで動作可能な仕掛けができるということで…
ゴニョゴニョ…と自分で言訳してみる。

でも、あれ?
これって、64bitのデータベース使った仕掛けとくっつけようとすると、
また一苦労するんじゃないか?
とりあえず目を背けるか…

64bitの世界と32bitの世界の並行稼働の間はこの辺、
苦労しかしない予感がするんだよなぁ

でも、
http://office.microsoft.com/ja-jp/word-help/HA010369476.aspx
によると

既定では、コンピューターで 64 ビット版の Windows を実行している場合でも、Microsoft Office 2010 では 32 ビット版の Office 2010 がインストールされます。
 重要   32 ビット版の Office 2010 は、ほとんどの人に推奨されるオプションです。これは、他の 32 ビット アプリケーション (特に 32 ビット オペレーティング システムでのみ使用できるサード パーティ製アドイン) の潜在的な互換性に関する問題を回避できるためです。


ということで、Officeは当面32bit使ってねってことなんですよね。
まあ、32bit時代の資産が軒並み使えなくなるってのもあれだしね…
でも、これって、64bit普及しないんじゃぁないだろうか…

将来的に新しいOSでは32bitのアプリは動きませんって言った時に
パニック起こしそう…

0 件のコメント:

コメントを投稿