用Java从Oracle取数据的问题
xdszg 2003-02-13 08:59:40 数据库内结构体类型的定义:
teststruct{
name varchar2(10)
age number(3.0)
}
数据:teststruct=('szg',20)
程序如下:
import java.sql.*;
import java.io.*;
import java.math.BigDecimal;
public class Struct1{
public static void main(String[] args){
String ldriver = "oracle.jdbc.driver.OracleDriver";
String lurl = "jdbc:oracle:thin:@172.28.90.44:1521:oracledb";
String user = "system";
String pwd = "manager";
try{
DriverManager.registerDriver((java.sql.Driver)Class.forName(ldriver).newInstance());
Connection conn = DriverManager.getConnection(lurl,user,pwd);
if (!conn.isClosed()){
System.out.println("Connect OK");
}else{
System.out.println("Connect ERROR");
}
Statement stmt = conn.createStatement(ResultSet.TYPE_FORWARD_ONLY,ResultSet.CONCUR_UPDATABLE);
stmt.executeUpdate("insert into szgtest(teststruct) values(struct_test('szg',20))");
conn.commit();
System.out.println("Insert OK!");
ResultSet rs = stmt.executeQuery("select teststruct from szgtest");
while (rs.next()){
Struct struct = (Struct)rs.getObject(1);
Object[] attributes = struct.getAttributes();
String name = (String)attributes[0];
int age = ((BigDecimal)attributes[1]).intValue();
System.out.println("Name:" + name);
System.out.println("Age:" + age);
System.out.println();
}
conn.commit();
rs.close();
stmt.close();
conn.close();
}catch(Exception e){
System.out.println("Exception");
e.printStackTrace();
}
}
}
运行结果:
Name:0x737A67
Age:20
问为什么'szg'变成了'0x737A67',
我知道实际上73,7A,67就是'szg'各个字符的ASC值.
但我不知道如何把它转换出来.
高手赐教,100分!