java - 如何创建 oracle.sql.ARRAY 对象?

标签 java oracle jdbc oracle11gr2

这个问题和我原来的问题有关How to return an array from Java to PL/SQL ? , 但更具体。

我一直在读Oracle Database JDBC Developer's Guide

但我仍然没有写出可以使用

创建 ARRAY 的最少代码
ARRAY array = oracle.jdbc.OracleConnection.createARRAY(sql_type_name, elements);

按照Creating ARRAY objects中的指示.

我正在使用 Oracle 数据库 JVM。

我试过以下方法:

示例 1

create or replace type widgets_t is table of varchar2(32767);
/

create or replace and compile java source named "so20j1" as
public class so20j1 {
    public void f1() {
        String[] elements = new String[]{"foo", "bar", "zoo"};
        oracle.sql.ARRAY widgets =
            oracle.jdbc.OracleConnection.createARRAY("widgets_t", elements);
    }
};
/
show errors java source "so20j1"

失败:

Errors for JAVA SOURCE "so20j1":

LINE/COL ERROR
-------- -----------------------------------------------------------------
0/0  so20j1:4: non-static method
     createARRAY(java.lang.String,java.lang.Object) cannot be
     referenced from a static context

0/0  1 error
0/0  ^
0/0  oracle.sql.ARRAY widgets =
     oracle.jdbc.OracleConnection.createARRAY("widgets_t", elements);

示例 2

create or replace type widgets_t is table of varchar2(32767);
/

create or replace and compile java source named "so20j2" as

public class so20j2 {
    public void f1() {
        String[] elements = new String[]{"foo", "bar", "zoo"};
        oracle.jdbc.OracleDriver ora = new oracle.jdbc.OracleDriver();
        java.sql.Connection conn = ora.defaultConnection();
        oracle.sql.ARRAY widgets = conn.createARRAY("widgets_t", elements);
    }
};
/
show errors java source "so20j2"

失败:

Errors for JAVA SOURCE "so20j2":

LINE/COL ERROR
-------- -----------------------------------------------------------------
0/0  so20j2:6: cannot find symbol
0/0  symbol  : method createARRAY(java.lang.String,java.lang.String[])
0/0  1 error
0/0  oracle.sql.ARRAY widgets = conn.createARRAY("widgets_t",
     elements);

0/0  ^
0/0  location: interface java.sql.Connection

免责声明:我还不是 Java 程序员。

最佳答案

#2 的方向是正确的,但是您不能从 java.sql.Connection 类型的连接创建 oracle 数组。它必须是 OracleConnection 才能使用这些方法。

oracle.jdbc.OracleDriver ora = new oracle.jdbc.OracleDriver();
java.sql.Connection conn = ora.defaultConnection();
OracleConnection oraConn = conn.unwrap(OracleConnection.class);
oracle.sql.ARRAY widgets = oraConn.createARRAY("widgets_t", elements);

关于java - 如何创建 oracle.sql.ARRAY 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7878735/

相关文章:

java - 关于接口(interface)的不适用方法错误

C# {"ORA-00917: missing comma"} 插入查询错误

java - 如何从jtable中的复选框中获取选中的值?

Java : JDBC Delete Row Issue

java - com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException : Unknown column 'quantity' in 'field list'

java:有纪元时间,打印多长时间前发生的时间/天/周

java - Openjdk 和 Java webstart

java - 升级到Gradle 3,我无法构建发行版,因为它似乎不符合我的保护规则

mysql - 使用 SQL Developer 3 将 MySQL 数据库迁移到 Oracle 11g

java - 比较 Oracle PACKAGE 中的日期类型不起作用