So, here is the code that creates the table in the Oracle 10g / UTF-8 database:
CREATE TABLE TEST_SEMANTIC ( SEMANTIC_COLBYTE char(2 byte) , SEMANTIC_COLCHAR char(2 char) );
means that I use two different types of semantics for two columns, bytes and char.
Then I insert the following data into the database:
insert into test_semantic(SEMANTIC_COLBYTE,SEMANTIC_COLCHAR) values('é','é');
Therefore, when I use the JDBC driver to query the database in a java program and display the result, I expect this output:
Byte>é< Char>é<
Considering the following:
Byte>é< Char>é <
When I query the database as follows:
select dump(semantic_colbyte,16),dump(semantic_colchar,16) from test_semantic;
I get this:
Typ=96 Len=2: c3,a9 Typ=96 Len=3: c3,a9,20
Here is the java code:
public static void main(String[] args){ Connection con = null; try { Class.forName("oracle.jdbc.driver.OracleDriver"); } catch (java.lang.ClassNotFoundException e) { System.err.print("ClassNotFoundException:"); System.err.println(e.getMessage()); } try { Properties props = new Properties(); props.put("user", "XXX"); props.put("password", "XXX"); con = DriverManager.getConnection("jdbc:oracle:thin:@xxx:1521:xxx", props); Statement stmt = (Statement) con.createStatement(); stmt.execute("SELECT SEMANTIC_COLBYTE,SEMANTIC_COLCHAR FROM TEST_SEMANTIC"); ResultSet result = stmt.getResultSet(); result.next(); String output_byte = result.getString(1); String output_char = result.getString(2); System.out.println("Byte>"+output_byte+"<"); System.out.println("Char>"+output_char+"<"); } catch (SQLException ex) { System.err.println("SQLException: " + ex.getMessage()); } }