このページは、以下の英語ページの抄訳です。最新の情報については、
英語ページを参照してください。
この文書は、もともとiAnywhere JDBC ドライバー ( version 12 からSQL Anywhere JDBC ドライバー)を使ってJavaのアプリケーションを設定する方のために作成したものです。
自分でもまだ時々参照していたので、役に立つと思い、いくつかのマイナー変更とともに内容を更新しました。
JDBC で SQL Anywhere に接続するのは難しいことがあるとお客様から聞いたことがあります。調べてみたところ、これはほとんどいつも JDBC ドライバーを登録する際に使用するクラス名や、実際にそのデータベースに接続する際に使用するURLの混乱によるものということがわかりました。
振り返ってみると、JDBC ドライバーの歴史により、お客様が容易に混乱することがわかりました。
明確にするため、SQL Anywhere version 9 より、JDBC ドライバーの歴史を以下にまとめてみました。
SQL Anywhere JDBC ドライバーの歴史の詳細を説明する前に、以下にクラスパスの設定、必要な jar ファイル、ドライバー名 URL とサンプル接続URL のまとめました。
- Adaptive Server Anywhere version 9.0 (またはSQL Anywhere 9.0)
version 9 では、SQL Anywhere はiAnywhere のジェネリックな JDBC-ODBC ブリッジドライバー (Sun JDBC/ODBC ドライバーと似ているけれども異なる) を使用してJDBC 2.0 をサポートしていました。 jar ファイルは jodbc.jar で、%ASA90%\java ディレクトリーにあります。iAnywhere JDBC ドライバーを使用するには、クラスパスにこの jar を含める必要があります。そして、それをお客様のjava app に以下のコードを使用して登録する必要があります。
- DriverManager.registerDriver(
- (Driver)Class.forName( "ianywhere.ml.jdbcodbc.IDriver" ).newInstance() );
iAnywhere JDBC/ODBC ドライバーはブリッジドライバーなので、SQL Anywhere データベースに接続するには、残りの接続文字列とともに "DRIVER=" パラメーターを特定する必要があります。例えば、
- Connection con = DriverManager.getConnection(
- "jdbc:odbc:Driver=Adaptive Server Anywhere 9.0;UID=DBA;PWD=sql;eng=demo" );
または、以下のような ODBC データソースリンクを使用することもできます。
- Connection con = DriverManager.getConnection(
- "jdbc:odbc:DSN= Adaptive Server Anywhere 9.0 Sample" );
- SQL Anywhere 10.0.0
version 10 では、JDBC 3.0. へのサポートを追加しました。version 10 の iAnywhere JDBC/ODBC ブリッジドライバーを使用するには、同様に %SQLANY10%\java\jodbc.jar をお客様のクラスパスに含める必要があります。しかしながら、ドライバーの登録のためのクラス名は、少し異なります。
- DriverManager.registerDriver(
- (Driver)Class.forName( "ianywhere.ml.jdbcodbc.jdbc3.IDriver" ).newInstance() );
登録されると、接続URLは上記のversion 9 と同じです。
- SQL Anywhere 10.0.1
version 10 がリリースされた後、JDBC が含まれるお客様での問題から、iAnywhere ドライバーがロードされなければいけないところで、特に、Sun JDBC/ODBC ブリッジドライバがある場合には、ロードされていないことがあることがわかりました。接続URL内の "jdbc:odbc" の使用が、iAnywhere ドライバーを接続中に確実に使用するには十分ではなかったことがわかりました。Sun ブリッジがある場合には、これがピックアップされ、代わりに使用されることがあり、あらゆる種類の予期せぬ動きにつながっていました。この問題を解決するために、10.0.1 のメンテナンスリリースでは、iAnywhere ドライバーのための新しいURL ヘッダー「jdbc:ianywhere」が実装されました。これ以降、ドライバーを登録するためのURLは、v10 と同じですが、データベースに接続する場合の正しいURL は以下のとおりです。
- Connection con = DriverManager.getConnection(
- "jdbc:ianywhere:Driver=SQL Anywhere 10;DSN= SQL Anywhere 10 Sample" );
接続文字列のこの「jdbc:ianywhere」部分は、実際 9.0.1 ebf にもポートされましたので、9.0.1 または 9.0.2 のebf の新しいものを使用している場合には、上記の接続 URLが同様に機能します。
- SQL Anywhere version 11.0.0
SQL Anywhere version 11 では、ドライバーのクラス名または接続文字列のURLに変更はありません。しかしながら、JDK の新しいバージョンにアップデートしました。これはJDBC 2.0 ドライバーをドロップしなければならないことを意味していました。なぜならば、JDK 1.4 以降では、これをサポートしていなかったからです。お客様にとって簡単であるために、version 10 JDBC 3.0jar のJDBC 2.0 クラス名をそのままにしました。単純に、JDBC 3.0 の相当のものにポイントされます。
- SQL Anywhere 11.0.1
SQL Anywhere version 11.0.1 では、新しい SQL Anywhere JDBC ドライバーが実装されました。これは、ジェネリックな iAnywhere JDBC ドライバーではなく、SQL Anywhere だけのJDBC ドライバーです。これは、SQL Anywhere でJDBC を使用するお客様のために、より簡単で(より混乱なく) 利用いただくために作られました。新しいドライバーでは、ODBC をシステムにインストールする必要はありません。これは、Windows では問題ではありませんでしたが、Linux やUnix のお客様では、これのために問題が発生することがありました。さらに良いことには、ODBC ドライバーマネージャーを経由しなくなったため、ドライバーのパフォーマンスが向上しました。この変更により、SQL Anywhere のインストールで、ファイルが2つ追加されることになりました。sajdbc.jar と dbjdbc11.dll です。この新しいドライバーを使用するには、クラスパスに%SQLANY11%\java\sajdbc.jar を含める必要があります。そして、ドライバーの登録は、以下のようにしてください。
- DriverManager.registerDriver(
- (Driver)Class.forName( "sybase.jdbc.sqlanywhere.IDriver" ).newInstance() );
それから、接続には以下のURLを使用します。
- Connection con = DriverManager.getConnection(
- "jdbc:sqlanywhere:uid=DBA;pwd=sql;eng=demo" );
- SQL Anywhere 12/16
SQL Anywhere 12 では、 iAnywhere JDBC/ODBC ブリッジドライバーではなく、新しいSQL Anywhere ドライバーを使用することにしました。さらに、SQL Anywhere 12 は、JDBC 4.0 (JDK 1.6 以降を必要とします) をサポートする予定です。JDBC 3.0 を継続して使用する場合は、ユーザーは以前のバージョンから何も変更しないでください。逆に、JDBC 4.0 サポートを使用するには、新しいドライバーの名前は、「sybase.jdbc4.sqlanywhere.IDriver」ですので、%SQLANY12%\java\sajdbc4.jar をクラスパスに含める必要があります。しかし、ドライバーを使用する前に DriverManager.registerDriver(...) をドライバーを登録するために呼び出す必要はもうありません。 Sun が、自動ドライバー登録を実装したため、アプリケーションは sajdbc4.jar が確実にクラスパスに(そしてdbjdbc12.dll がパスに)あるように、そして、"jdbc:sqlanywhere" URL ヘッダーを接続に使用する必要があるだけです。そのため、SQL Anywhere 12 と JDBC 4.0 で接続するには、以下のようなコードのラインにするだけです。
- Connection con = DriverManager.getConnection(
- "jdbc:sqlanywhere:uid=DBA;pwd=sql;eng=demo" );
以上がこれまでの歴史のまとめです。まだ混乱されているでしょうか ?
===
SAP SQL Anywhere に関する詳細情報は、<英語> を参照してください。
上記のコミュニティーに掲載されている技術情報は、順次
SQL Anywhere 日本語コミュニティ
に掲載しています。
SQL Anywhere に関してはまずは
こちらをご参照ください。無期限でご利用いただける無償の Developers Edition もこちらからダウンロードが可能です。
SQL Anywhere に関して技術的な質問のある方はコミュニティに登録し、
「Ask a Question」機能をご利用ください。
Language には「Japanese」、
Primary Tag には「SAP SQL Anywhere」を選択
User Tagに「sql anywhere」「sql anywhere Japanese question」
を入力してください。
不具合につきましては、サポート契約者様専用の問い合わせ方法にてお問い合わせください。
======================
ご購入に関するお問い合わせ
こちらよりお問い合わせください。