2 回答

TA貢獻(xiàn)1775條經(jīng)驗(yàn) 獲得超8個(gè)贊
經(jīng)過(guò)兩天的搜索,主要問(wèn)題是 datumnArray 是 ???。這意味著 oracld db 和 jdbc 與其字符集不匹配。添加此代碼后。
String s1 = new String(account.get(0).getBytes(), Charset.forName("ISO-8859-1"));
String [] name = new String[]{s1};
//oracle.sql.ArrayDescriptor arrayDescriptor = new ArrayDescriptor("ARRAY_VARCHAR2",connection);
oracle.sql.ARRAY a = connection.createARRAY("ARRAY_VARCHAR2", name);
并將這個(gè)庫(kù)添加到maven中
<dependency>
<groupId>com.oracle</groupId>
<artifactId>orai18n</artifactId>
<version>11.1.0.7.0</version>
</dependency>
這對(duì)我有用。我認(rèn)為他們都是解決問(wèn)題的關(guān)鍵。下面的圖片開(kāi)頭。

TA貢獻(xiàn)1891條經(jīng)驗(yàn) 獲得超3個(gè)贊
使用oracle.sql.ARRAYandoracleConnection.setARRAY()而不是java.sql.Arrayand javaConnection.setArray():
Connection connection = JdbcConnection.getInstance().createConnection();
OracleConnection oconnection = (OracleConnection) connection.unwrap( oracle.jdbc.OracleConnection.class );
String [] name = new String[]{"20206643799002684001","20206643799002684001"};
ArrayDescriptor arrDec = ArrayDescriptor.createDescriptor("ARRAY_VARCHAR2",oconnection);
ARRAY arr = new ARRAY(arrDec,oconnection,name);
/*
* Or
* ARRAY arr = oconnection.createARRAY("ARRAY_VARCHAR2", name);
*/
OracleCallableStatement callableStatement
= (OracleCallableStatement) oconnection.prepareCall("{call bss_acc.ACC_STATEMENT(?,?,?,?)}");
callableStatement.setDate(1,date);
callableStatement.setDate(2,dateL);
callableStatement.setARRAY(3,arr);
callableStatement.setString(4,this.branchId);
callableStatement.execute();
添加回答
舉報(bào)