2

我的英文说的不是很好

我的英语是语法错误

希望理解

我在 OJDBC6 中使用数组类。

使用它(ARRAY 类)将数据发送到 oracle 数据库(过程)。

数字类型和日期类型的数据在 oracle 中非常好。

varchar2类型的howerver数据在oracle(ARRAY)中为空

我看到了不同的解决方案(java 路径设置 orai18n.jar 文件),但它有 java.lang.NoSuchMethodError: oracle.i18n.text.converter.CharacterConverterOGS.getInstance(I)Loracle/i18n/text/converter/CharacterConverter 错误;

我没有找到解决此问题的方法

请问这个问题怎么解决~~~~~

我使用JDK1.7,OJDBC6.jar

----------------------------------------------orclae 代码-- -------------------------------- 创建或替换类型 XXXXXXXX_TYPE 作为对象(

 nnnnnnn1                NUMBER
,nnnnnnn2                NUMBER
,nnnnnnn3                NUMBER
,vvvvvvv1                VARCHAR2(150)
,nnnnnnn4                NUMBER
,dddddddd1               DATE
,vvvvvvv2                VARCHAR2(250)
,nnnnnnn5                NUMBER
,dddddddd2               DATE
,nnnnnnn6                NUMBER
,dddddddd3               DATE
,nnnnnnn7                NUMBER
,vvvvvvv3               VARCHAR2(10)
,vvvvvvv4               VARCHAR2(30)
,vvvvvvv5               VARCHAR2(20)
,vvvvvvv6               VARCHAR2(80)

--XXXXXXXX_TYPE 结束

创建或替换类型 XXXXXXXXXXX_TBL 作为 XXXXXXXX_TYPE 的表

-- XXXXXXXXXXXX_TBL 结束

------------------------------java-------- --------------------------

公共类 Ex_mainJava {

public static void main(String[] args){

    DBPoolCon db = DBPoolCon.getInstance();

    String str = "{call xxx_xxx_xxxx_xxxx_result_pkg.XX_XX_result(?,?,?)}";
try {
    Connection oracleConn   = (OracleConnection) db.buildPoolConnection();
    CallableStatement callStatement = oracleConn.prepareCall(str);

    Object[][] x_ctr_tbl =  new Object[1][16]; 


        x_ctr_tbl[0][0] = 1;   
        x_ctr_tbl[0][1] = 2;
        x_ctr_tbl[0][2] = 3;
        x_ctr_tbl[0][3] = "ABC";
        x_ctr_tbl[0][4] = 4;
        x_ctr_tbl[0][5] = java.sql.Date.valueOf("2014-06-18");
        x_ctr_tbl[0][6] = "DEF";
        x_ctr_tbl[0][7] = 5;
        x_ctr_tbl[0][8] = java.sql.Date.valueOf("2014-06-18");
        x_ctr_tbl[0][9] = 6;
        x_ctr_tbl[0][10] = java.sql.Date.valueOf("2014-06-18");
        x_ctr_tbl[0][11] = 7;
        x_ctr_tbl[0][12] = "HHHH";
        x_ctr_tbl[0][13] = "KKKK";
        x_ctr_tbl[0][14] = "JJJJ";
        x_ctr_tbl[0][15] = "MMMM";



    ArrayDescriptor oracleCollection2 = ArrayDescriptor.createDescriptor("XXXXXXXXXXX_TBL ".toUpperCase(),oracleConn);


    ARRAY oraArry2 =  new ARRAY(oracleCollection2, oracleConn,x_ctr_tbl);
            System.out.println(oraArry2.dump());

    callStatement.registerOutParameter(1, java.sql.Types.VARCHAR);
    callStatement.registerOutParameter(2, java.sql.Types.INTEGER);
    callStatement.setArray(3,oraArry2);
    callStatement.execute();

    String s =callStatement.getString(1);
    int i = callStatement.getInt(2);

        System.out.println("error:"+s);
        System.out.println("code:"+i);

    callStatement.close();






} catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

}

}

- - - - -安慰 - - - - - - - - - - - - - - - - - -

  System.out.println(oraArry2.dump());    
 nnnnnnn1                1
,nnnnnnn2                2
,nnnnnnn3                3
vvvvvvv1                ??? <---problem
nnnnnnn4                4 
dddddddd1               2014-06-18 00:00:00.0
vvvvvvv2                ??? <---problem
nnnnnnn5                5
dddddddd2               2014-06-18 00:00:00.0
nnnnnnn6                6
 dddddddd3               2014-06-18 00:00:00.0
 nnnnnnn7                7
 vvvvvvv3                ???  <---problem
 vvvvvvv4                ???  <---problem
 vvvvvvv5                ???  <---problem
 vvvvvvv6                ???  <---problem

示例代码源

请帮我解决问题???(问题)

谢谢你。您阅读了我的问题的来源

4

0 回答 0