相关疑难解决方法(0)

如何防止此异常?java.sql.SQLException:无法转换为内部表示:

我的代码在以下行中引发了上述异常(第2行):

final ArrayDescriptor tParamArrayDescriptor = ArrayDescriptor.createDescriptor("MY_SYSTEM.T_PARAM_ARRAY", databaseHandler.getConnection());
final ARRAY oracleArray = new ARRAY(tParamArrayDescriptor, databaseHandler.getConnection(), myObjects.toArray());
Run Code Online (Sandbox Code Playgroud)

它给了我以下例外:

java.sql.SQLException: Fail to convert to internal representation: 
Run Code Online (Sandbox Code Playgroud)

myObjects是以下POJO的ArrayList:

public class MyObject
{
    private String name;
    private String surname;

    private int age;

    ...

    // Accessors etc..

}
Run Code Online (Sandbox Code Playgroud)

T_PARAM_ARRAY数据库上看起来如下:

create or replace
TYPE               T_PARAM_ARRAY AS OBJECT (NAME VARCHAR2(50), SURNAME VARCHAR2(50), AGE NUMBER(1));
Run Code Online (Sandbox Code Playgroud)

经过一些研究,我认为我的POJO和数据库类型之间的数据类型映射不能正确匹配.我有理由相信String匹配到VARCHAR2确定,但我认为转换int为a时存在问题NUMBER.

我尝试过使用BigDecimal,但这并没有改善这种情况.

有什么建议?

编辑:根据Oracle文档:Where intArray is an oracle.sql.ARRAY, corresponding to a VARRAY of …

java oracle sqlexception

5
推荐指数
1
解决办法
1万
查看次数

无法转换为内部表示(oracle.sql.ARRAY)

我想转换我的Object[] Arrayin oracle.sql.ARRAY,所以我可以将它插入到我的 Oracle 数据库 (12c) 中。

public class Datatransfer{

  public static void main(String[] args) throws SQLException, ClassNotFoundException{

    Connection accessConn = null;
    Connection oracleConn = null;
    Statement stmt = null;
    ResultSet rs = null;
    String mySelectSQL = "Select * from Supplier";

    try{
        oracleConn = DBConnection.connOracle();
        accessConn = DBConnection.connAccess();
        stmt = accessConn.createStatement();
        rs = stmt.executeQuery(mySelectSQL);

        while(rs.next()){
           do_something...

           Object[] addressArray = {rs.getString("Street"),
                                   rs.getString("Location"),
                                   rs.getString("Region"),
                                   rs.getString("Postcode"),
                                   rs.getString("Country")};
           oracle.sql.ARRAY myAddressArray =
                        ((oracle.jdbc.OracleConnection)oracleConn).
                        createARRAY("ADDRESS_ARRAY", addressArray);

        do_something...

    }
    catch(SQLException | ClassNotFoundException e)
    {e.printStrackTrace();} …
Run Code Online (Sandbox Code Playgroud)

java oracle12c

5
推荐指数
0
解决办法
2961
查看次数

标签 统计

java ×2

oracle ×1

oracle12c ×1

sqlexception ×1