最後に、製品の2つの同一のセットアップがあります。1 つのセットアップは正常に機能していますが、もう 1 つのセットアップでは以下の問題が発生しています。
データベースでクエリを実行しています。クエリは次のようになります。
String query = select col1_name, col2_name, col3_name from table_1;
PreparedStatement l_statement = null;
Connection con = "<connection-string>";
l_statement = con.prepareStatement(query);
Resultset l_rs = l_statement.executeQuery();
現在、col1("column1") データ型は "SYS.XMLTYPE" です。列データをフェッチするコードは次のとおりです。
Object obj = null;
obj = l_rs.getObject(1);
String xmlStr = null;
if(obj instanceof XMLTYPE){
...
} lse if (obj instanceof XMLTYPE){
...
} else if (obj instanceof java.sql.SQLXML){
xmlStr = ((SQLXML)obj).getString ();
}
プログラムの制御は、最後の else if に行きます。つまり、
xmlStr = ((SQLXML)obj).getString ();
xmlStr の値を調べると、次のようなジャンク文字が含まれています。
Ÿcž(too many junk characters.)
ある設定ではこのコードは正しく動作し、別の設定では xml 文字列がジャンク文字を生成します。その理由は何ですか?