Это мой код, где METHODARGDATATYPE_VARRAY - это разновидность в пятом столбце моей таблицы, а первый столбец имеет автогенерированную последовательность, объединенную с 't'.Вставить значения в таблицу с помощью конкатенации и Varray
String arrayElements[] = { "Test3", "Test4" };
ArrayDescriptor desc = ArrayDescriptor.createDescriptor
("METHODARGDATATYPE_VARRAY", conn);
ARRAY newArray = new ARRAY(desc, conn, arrayElements);
String sql="insert into TestCaseIDDetails values (concat('t',TestCaseID_sequence.nextval),?,?,?,?)";
PreparedStatement ps =
conn.prepareStatement (sql);
ps.setString(2,testCaseIDandDetailsBean.getClass_name()) ;
ps.setString(3,testCaseIDandDetailsBean.getMethod_name()) ;
ps.setString(4,testCaseIDandDetailsBean.getMethodReplacement()) ;
((OraclePreparedStatement)ps).setARRAY (5, newArray);
ps.execute();
Iam пытается выполнить этот код, но опять Иам получаю ошибки следующим образом:
java.sql.SQLException: Invalid column index
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:208)
at oracle.jdbc.driver.OraclePreparedStatement.setARRAYInternal(OraclePreparedStatement.java:5906)
at oracle.jdbc.driver.OraclePreparedStatement.setARRAY(OraclePreparedStatement.java:5898)
at implementation.TestCaseIDandDetailsDAOImpl.addTestCaseIDandDetails(TestCaseIDandDetailsDAOImpl.java:54)
at implementation.TestCaseIDandDetailsDAOImpl.main(TestCaseIDandDetailsDAOImpl.java:134)
мои tablescripts являются:
CREATE or replace TYPE METHODARGDATATYPE_VARRAY AS VARRAY(20) OF varchar2(30);
create table TestCaseIDDetails(
testcaseID varchar2(20) primary key,
classname varchar2(20) not null,
methodname varchar2(20) not null,
MethodReplacement char(2) check(MethodReplacement in ('y','n')),
MethodArgDataType METHODARGDATATYPE_VARRAY);
Create sequence TestCaseID_sequence minvalue 1 start with 1 increment by 1 ;
, но после того, как эти изменения я получаю сообщение об ошибке как указано ниже: ORA-12899: значение слишком велико для столбца «ER706221». «TESTCASEIDDETAILS». «METHODREPLACEMENT» (актуально: 10, максимум: 2) –