Hi,
I am trying to do a multiple insert with a prepared statement. I am iterating an ArrayList to get all my values from
TABLE_A and insert into
TABLE_B . However only one raw is inserted in TBALE_B with an
java.sql.SQLException: ORA-00001: unique constraint violated
exception.My initial code is below.
MyBean.java - my DTO
package transaction;
import java.io.*;
import java.sql.Date;
public class MyBean implements Serializable{
private String firstName = "";
private Date regDate = null;
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public Date getRegDate() {
return regDate;
}
public void setRegDate(Date regDate) {
this.regDate = regDate;
}
}
Transaction.java
package transaction;
import java.sql.*;
import java.util.*;
public class Transaction {
private static final String DB_A = "java:comp/env/jdbc/dbA";
private static final String DB_B = "java:comp/env/jdbc/dbB";
private static final String TABLE_A = "table_A";
private static final String TABLE_B = "table_B";
public static ArrayList doTransaction() {
String sqlQuery = "SELECT * FROM " + TABLE_A;
String insertStr = "INSERT INTO " + TABLE_B + " VALUES(?,?)";
Connection dbConn_A = null;
Connection dbConn_B = null;
Statement statmnt_A = null;
PreparedStatement insert = null;
ResultSet rstset = null;
MyBean records = null;
ArrayList recordList = new ArrayList();
try {
dbConn_A = DbConnection.getDbConnection(DB_A);
dbConn_B = DbConnection.getDbConnection(DB_B);
dbConn_A .setAutoCommit(false);
dbConn_B.setAutoCommit(false);
statmnt_A = dbConn_A.createStatement();
rstset = statmnt_A.executeQuery(sqlQuery);
while(rstset.next()){
records = new MyBean();
records.setFirstName(rstset.getString("first_name"));
records.setRegDate(rstset.getDate("reg_date"));
recordList.add(records);
try {
insert = dbConn_B.prepareStatement(insertStr);
Iterator it = recordList.iterator();
while ( it.hasNext()) {
MyBean curRecord = (MyBean)it.next();
//Interting
insert.setString(1, curRecord.getFirstName());
insert.setDate(2, curRecord.getRegDate());
}
} catch (SQLException ex) {
ex.printStackTrace();
////
////
}
}
dbConn_A.commit();
dbConn_B.commit();
dbConn_A.setAutoCommit(true);
dbConn_B.setAutoCommit(true);
} catch (SQLException ex) {
ex.printStackTrace();
/////
////
} finally {
/////
/////
}
return recordList;/////for debug'n
}
}
I will appreciate for any help.
Thanx in advance