这个问题与我最初的问题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);
如创建ARRAY对象中所述。
我正在使用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程序员。
6条答案
按热度按时间lo8azlld1#
第二个方法是正确的,但是不能从java.sql.Connection类型的连接创建oracle Array,必须是OracleConnection才能使用这些方法。
qxgroojn2#
根据Affe和Chris Mazzola的回答,我成功地构建了两个在Oracle 11g R2数据库中编译的示例。
示例基于Affe的回答
示例基于Chris Mazzola的回答
mo49yndu3#
idv4meu84#
在Java 1.6中,您有
connection.createArrayOf(..)
,它是标准的。h79rfbju5#
Map〈字符串,对象〉params =新哈希Map〈〉();
公共类ExampleArrayMapper扩展抽象SqlTypeValue {私有字符串[] customObject;
kg7wmglp6#
Oracle 12.2版本:
数据库管理系统。字符串[] v_list ;
v_arr =((Oracle.jdbc. Oracle连接)驱动程序管理器.获取连接(“jdbc:默认:连接:“)).创建数组(“T_字符串_数组”,v_列表);