This is my code where METHODARGDATATYPE_VARRAY is a varray at 5th column in my table and first column has auto generated sequence concatenated with 't'.
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 trying to execute this code but again Iam getting errors as follows:
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) my tablescripts are:
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 ;