First a little background, I'm using jdk 1.6. I've got a 2 column table in an Oracle 8i DB that holds a very simple code to word map. There are no strange characters. Both columns are varchar.
From my desktop machine, when I execute the the following:
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));
}
Everything works fine, and I get the results I expect (both return values for getString(1) and getString(2) are exactly as they are stored in the table)
HOWEVER:
When I execute the same exact code in a servlet sitting on a Tomcat server (I'm using a simple applet servlet model to access the table and return a response to the applet), crs.getString(int) returns strings like: 0x53, 0x54, 0x4E and so on.
I am unsure what this means, and would be grateful for any assistance. I am wondering where to start to troubleshoot the problem.
Oracle 8i is very old. I believe 1999 or 2000. Is your combination of jdk and Tomcat and Oracle and JDBC certified/supported?