TomCatをベースにした、DBがOracleのローカルなWebページでテストを行っている最中、
「データソース名および指定されたドライバが見つかりません」というエラーが発生しました。
stmt = con.createStatement();
rs = stmt.executeQuery( sqlbun );
SQL実行前の、createStatementでSQL文生成を実行したタイミングで発生していました。
エラーの原因を調べてみたところ
「データソース(ODBC)の設定」が関係しておりました。
ユーザーDSN、または、システムDSNのところでデータベースへのアクセスの設定を行っていない事が
原因でした。
このデータソース(ODBC)ですが、
「この設定を行うとDBとアクセス」ができる、という認識しかないので教えて頂きたいのですが、
何をするものなのか?またいつ使用するか?など漠然とでしか把握できておりません。
データソース(ODBC)とは、
OracleならOracle専用のデータソース、PostgreSQLならPostgreSQLのデータソースという風に
各種DBと接続する際に必ず必要なものなのでしょうか?
また、JDBCを使用する場合にはデータソース(ODBC)の追加は不要なのでしょうか?
http://www.techscore.com/tech/J2EE/JDBC/oracle-1.html
使用するドライバーにもよります。
JDBCといってもJavaAPIとして仕様が決められているのはインターフェースだけです。
http://www.atmarkit.co.jp/fjava/javafaq/jdbc/jdbc02.html
JDBCドライバーには大きく分けて4種類あります。
TYPE1:JDBC-ODBCブリッジドライバ
TYPE2:ネイティブブリッジドライバ
TYPE3:ネットプロトコルドライバ
TYPE4:ネイティブプロトコルドライバ
このうち、ODBCの設定をする必要があるのはTYPE1に属するものだけで現在ではほとんど使われていないタイプです。
何というJDBCドライバーを使っているのかによっても回答が変わってくるかと思います。
たとえばOCI Driverを使っている場合だと、Oracle Clientをインストールしネットマネージャで適切な設定をする必要があります。
そして、ネットマネージャで設定したデータベースサービス名でDriverManager.getConnection()を呼び出しコネクションを設定する必要があります。
Thin Driverを使っている場合だと、Oracle Clientすらインストールする必要がなく、Oracleが動いているマシーンのIPアドレス、ポート、Oracleのユーザ名とパスワードが正しく設定されていれば大丈夫なはずです。
早速のご回答ありがとうございます。
>JDBCドライバーには大きく分けて4種類あります。
>TYPE1:JDBC-ODBCブリッジドライバ
>TYPE2:ネイティブブリッジドライバ
>TYPE3:ネットプロトコルドライバ
>TYPE4:ネイティブプロトコルドライバ
JDBCで一つではなく、4種類に分かれてあるのですか。
>ODBCの設定をする必要があるのはTYPE1に属するものだけ
ありがとうございます。
JDBCとODBCについて勉強不足というのもあるのですが
何故JDBCとODBCが必要なんだろう・・・?という疑問が巡っておりまして(汗)
おかげ様でモヤモヤしていた疑問が取れました。