最初に少し背景を説明します。jdk 1.6 を使用しています。非常に単純なコードから単語へのマップを保持する Oracle 8i DB に 2 列のテーブルがあります。変なキャラはいらない。どちらの列も varchar です。
私のデスクトップマシンから、次を実行すると:
OracleDataSource ods = new OracleDataSource();
ods.setDriverType("thin");
ods.setServerName("DBserver.db");
ods.setDatabaseName("DB");
ods.setPortNumber(1527);
ods.setUser("user");
ods.setPassword("password");
Connection connection = ods.getConnection();
Statement stmt = connection.createStatement();
ResultSet res = stmt.executeQuery(SQL);
CachedRowSet crs = new CachedRowSetImpl();
crs.populate(res);
while (crs.next()) {
System.out.println("ID: " + crs.getString(1) +
", Name: " + crs.getString(2));
}
すべてが正常に動作し、期待どおりの結果が得られます (getString(1) と getString(2) の両方の戻り値は、テーブルに格納されているとおりです)
でも:
Tomcat サーバー上にあるサーブレットでまったく同じコードを実行すると (単純なアプレット サーブレット モデルを使用してテーブルにアクセスし、アプレットに応答を返します)、crs.getString(int) は次のような文字列を返します: 0x53, 0x54、0x4E など。
これが何を意味するのかわからないので、助けていただければ幸いです。問題のトラブルシューティングをどこから始めればよいか悩んでいます。