- PR -

Oracle Select文の結果をXMLで表示したい

1
投稿者投稿内容
IPホン
大ベテラン
会議室デビュー日: 2005/09/13
投稿数: 127
投稿日時: 2006-06-23 14:26
現在、JAVAでSelect文の結果をXMLで表示させたいプログラムを
作成していますが、DBのコネクションに関するエラーが表示され
対処法がよく分かりません。下記、説明を踏まえ、アドバイスを頂けたらと
思います。

<環境>
OS --> Windows2000 Pro
OracleDatabase --> Oracle8i
OracleClient --> Oracle9i
Platform --> Eclispse3.0.1
Java --> j2sdk1.4.2_09

<ソースコード>
import java.sql.*;
import oracle.xml.sql.query.*;
import oracle.jdbc.*;

Class Test_XML {
public static void main(String args[]) throws SQLException {
DriverManager.registerDriver
(new oracle.jdbc.driver.OracleDriver());
Connection conn =
DriverManager.getConnection
("jdbc:oracle:thin:@ホストPC名:1521:DB接続識別子","ユーザー","パス");

Statement stmt = conn.createStatement();
ResultSet rset = stmt.executeQuery("SELECT * FROM table_name");

OracleXMLQuery qry = new OracleXMLQuery(conn,rset);
qry.setEncoding("Shift_JIS");
qry.useNullAttributeIndicator(true);

String xmlString = qry.getXMLString();
System.out.println(" OUPUT IS:\n"+xmlString);
}
}

<エラー>
java.sql.SQLException: I/O例外です。: Connection refused(DESCRIPTION=(TMP=)(VSNNUM=135290880)(ERR=12505)(ERROR_STACK=(ERROR=(CODE=12505)(EMFI=4))))
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:179)
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:333)
at oracle.jdbc.driver.OracleConnection.<init>(OracleConnection.java:404)
at oracle.jdbc.driver.OracleDriver.getConnectionInstance(OracleDriver.java:468)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:314)
at java.sql.DriverManager.getConnection(DriverManager.java:512)
at java.sql.DriverManager.getConnection(DriverManager.java:171)
at lipper.Test_XML.main(Test_XML.java:24)
Exception in thread "main"

以上、よろしくお願いします。

もしもし
ぬし
会議室デビュー日: 2004/10/15
投稿数: 280
投稿日時: 2006-06-23 14:52
XML で云々以前にデータベースへの接続で問題になっているようですが、

oerr ora 12505
12505, 00000, "TNS:listener could not resolve SID given in connect descriptor"
// *Cause: The SID in the CONNECT_DATA was not found in the listener's tables.
// *Action: Check to make sure that the SID specified is correct.
// The SIDs that are currently registered with the listener can be obtained by
// typing "LSNRCTL SERVICES <listener name>". These SIDs correspond to
// SID_NAMEs in TNSNAMES.ORA, or db_names in INIT.ORA.
// *Comment: This error will be returned if the database instance has not
// registered with the listener; the instance may need to be started.

JDBC thin 接続であれば、DriverManager.getConnection の内容は
jdbc:oracle:thin:@hostname:listener_port:ORACLE_SID になります。
「DB接続識別子」とありますがもしかして tnsnames.ora の接続文字列を
指定していたり何てことありません?

_________________
もしもし@RMAN 友の会
IPホン
大ベテラン
会議室デビュー日: 2005/09/13
投稿数: 127
投稿日時: 2006-06-23 15:14
もしもしさん、返答ありがとうございました。

DB接続箇所に関して、初歩的なミスでした。
ORACLE_SIDを入れなおしましたので、DB接続はクリアできました。

すみません、それでは、気を取り直して・・・、

ソースコードのOracleXMLQuery qry = new OracleXMLQuery(conn,rset);
の箇所でエラーが出ました。
内容は、
java.lang.NoClassDefFoundError: oracle/xml/parser/v2/XSLException
です。

実行環境に、XMLParserが必要なのでしょうか?




IPホン
大ベテラン
会議室デビュー日: 2005/09/13
投稿数: 127
投稿日時: 2006-06-23 16:55
アドバイスを与えてくれました皆様

無事、SELECTの結果をXML形式で落とすことに成功しました。
Eclipseでの実行時に、外部JARの追加で、元々入れていました
xsu12.jarにxmlparserv2.jarを加えましたところ、出力されました。

いろいろとアドバイスを与えてくれました皆様、ありがとうございました。

1

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