为什么显式映射java类和oracle的type,但是在插入新记录时,可以添加数值型的数据,而String类型的总是为空,我试了Struct也是这样,请大家帮我找找错在哪里,谢谢
import java.sql.*;
import oracle.sql.*;
import oracle.jdbc.driver.*;
public class OracleData implements java.sql.SQLData{
private String sqlType;
private String param1;
private long param2;
private String param3;

public OracleData(){

}
public OracleData( String typeName, String param1, long param2, String param3){
sqlType = typeName;
this.param1 = param1;
this.param2 = param2;
                this.param3 = param3;
}

public String getSQLTypeName() throws SQLException{
return sqlType;
}

public void readSQL(SQLInput stream, String sqlType) throws SQLException{
this.sqlType = sqlType;
param1 = stream.readString();
                param2 = stream.readLong();
                param3 = stream.readString();
}

public void writeSQL(SQLOutput stream) throws SQLException {
stream.writeString(param1);
                stream.writeLong(param2);
                stream.writeString(param3);
}
        public static void main(String args[]){
        try{
            Class.forName(DatabaseInfo.getDriver());
        }catch(ClassNotFoundException e){
            System.err.println(e.getMessage());
        }
        String param1 = "Param1_Is_me";
        long param2 = 12345L;
        String param3 = "Param3_Is_me";
        OracleData data = new OracleData("MRSDBA.TEST_T", param1, param2, param3);
        Connection conn = null;
        try{
            conn=DriverManager.getConnection(DatabaseInfo.getURL());
            java.util.Map map = conn.getTypeMap();
            map.put("MRSDBA.TEST_T", Class.forName("OracleData"));
            OracleCallableStatement pCall = (OracleCallableStatement)conn.prepareCall(
                    "{call test_package.test_proc(?)}");
            pCall.setObject(1, data, OracleTypes.STRUCT);
            pCall.execute();
            pCall.close();
            conn.close();
        }catch(Exception e){
            System.err.println(e.getMessage());
        }
    }
}