- PR -

コネクション作成

投稿者投稿内容
かず
会議室デビュー日: 2005/01/31
投稿数: 8
お住まい・勤務地: 東京(出張)
投稿日時: 2005-01-31 20:58
どうも。はじめまして、はじめて投稿させていただきます。

現在、以下のようなクラスをつくり、ドライバをロードしてコネクションを作成し、
さらにSQLを実行してデータを削除したり追加したりしたいのですが、
コネクション作成時にエラーとなってしまいます。DBは別マシンでサーバーを
たてています。
いろいろ調べてはみたのですが、どれも解決しないままおわっているので、
何故接続出来ないのかわからず悩んでおります。

<エラー内容>
java.sql.SQLException: I/O例外です。: The Network Adapter could not establish the connection

<環境>
JDK:1.4.0_03
DBサーバー:Oracle8.1.6
オラクルクライアント:Oracle9i
JDBCドライバのクラスパスも通しています。

<ソース>
public class TableDataConverter {
 private static String strDriver = "oracle.jdbc.driver.OracleDriver";
 private static String strUrl= "jdbc:oracle:thin:@xx.xx.xxx.xxx:1521:ORCL";
 private static String strUserId = "user";
 private static String strPassword = "pass";
 private static String strTrunSql = "";
 private static StringBuffer sbSelectSql = new StringBuffer();
 private static StringBuffer sbInsertSql = new StringBuffer();

/**
* main処理
*/
public static void main(String arg[]) {
//SQL文生成
createSQL();
Connection objCon = null;
ResultSet objRS = null;
Statement objStmt = null;
PreparedStatement objPStmt = null;
try {
//JDBCドライバーロード
Class.forName(strDriver);
//データベース接続
objCon = DriverManager.getConnection
(strUrl, strUserId, strPassword); ←ここでエラーとなります!!!

〜〜〜〜〜〜〜    以下省略   〜〜〜〜〜〜〜〜〜
}
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2005-02-01 04:19
" The Network Adapter could not establish the connection "はソケット接続が確立できなかったことを示します。
ファイアウォールとかで1521番への接続が禁止されていたりしませんか?
SQLPlusで接続できるか、DBサーバ側でリスナが起動しているか、など確認してみましょう。
かず
会議室デビュー日: 2005/01/31
投稿数: 8
お住まい・勤務地: 東京(出張)
投稿日時: 2005-02-01 22:42
アドバイスありがとうございます。

SQLPlusでは接続でき、DBサーバ側でもリスナは起動しています。

インギさんからファイアウォールのご指摘がありましたが、
ネットワーク絡みで遮断されている可能性が高いと思います。
現在、このあたりを確認中です。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2005-02-02 02:12
SQL Plus で接続できるっていうのはTableDataConverterを起動しているのと同一筐体ですよね?
それでも接続できないのであればプロセス毎に接続ポリシーがことなっていることになりますので、Windows XP SP2 などのクライアント側のファイウォールが影響しているかもしれませんね。
pascal
常連さん
会議室デビュー日: 2004/04/29
投稿数: 29
お住まい・勤務地: 神奈川県
投稿日時: 2005-02-02 22:48
こんにちは。

私も同じエラーを見たことがあります。
詳細を忘れてしまったのですが、
コード:
 private static String strUrl= "jdbc:oracle:thin:@xx.xx.xxx.xxx:1521:ORCL";


のホスト名のところを、いじって解決したような記憶があります。
どういじったかを忘れてしまったので、何とも言えませんが。
Cluster
ぬし
会議室デビュー日: 2003/03/06
投稿数: 289
お住まい・勤務地: 大阪
投稿日時: 2005-02-03 00:27
この手の話題でよくあるのが、オラクルのSIDとSQL*NETのローカルネットサービス名を混同しているケースです。

# ちなみに、"jdbc:oracle:thin:@xx.xx.xxx.xxx:1521:ORCL" の一番最後に
# ついてるのはSID、SQL*PLUSで指定するのはネットサービス名

もし私の勘繰りすぎなら、ごめんなさい。>かずさん
(株)ぽち
ぬし
会議室デビュー日: 2002/09/10
投稿数: 376
投稿日時: 2005-02-03 10:33
orclってoacleインストール直後のデフォルトでできてる
インスタンスですよね。何もいじってないならorclで行け
そうですが。
SJ0392
ベテラン
会議室デビュー日: 2004/02/05
投稿数: 62
お住まい・勤務地: 神奈川・横浜
投稿日時: 2005-02-03 12:34
引用:

かずさんの書き込み (2005-01-31 20:58) より:
コード:
	try {
	   //JDBCドライバーロード
	   Class.forName(strDriver);
	   DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
	   //データベース接続
	   objCon = DriverManager.getConnection
               (strUrl, strUserId, strPassword);  ←ここでエラーとなります!!!

	〜〜〜〜〜〜〜    以下省略   〜〜〜〜〜〜〜〜〜
}




強調部分を追加してみたらどうですか?

スキルアップ/キャリアアップ(JOB@IT)