How to use INSERT INTO ALL statement in jdbc prepared statement with beans
Kindly give me some example that how we can use "INSERT INTO ALL STATEMENT" in jdbc prepared statement inside a jsf bean?
Actually i want to take employee id's of present employees using single jsf page and using one textbox for each employee id.
How can i use INSERT INTO ALL statement to achieve this?
Following is my code snippet.
AttendanceBean.java:
public class AttendanceBean {
private int atteid;
private String attdname;
private int attday;
private int attmonth;
private int attyear;
public static Connection getAttConnection() throws Exception {
String driver = "oracle.jdbc.driver.OracleDriver";
String url = "jdbc:oracle:thin:@localhost:1521:globldb3";
String username = "scott";
String password = "tiger";
Class.forName(driver);
Connection conn = DriverManager.getConnection(url, username, password);
return c开发者_StackOverflow中文版onn;
}
public String addAttendance(){
Connection conn = null;
PreparedStatement pstmt = null;
boolean committed = false;
try {
conn = getAttConnection();
conn.setAutoCommit(false);
String query = "INSERT ALL INTO attendance VALUES (?,?,?,?,?)";
pstmt = conn.prepareStatement(query);
pstmt.setInt(1,this.atteid);
pstmt.setString(2,this.attdname);
pstmt.setInt(3,this.attday);
pstmt.setInt(4,this.attmonth);
pstmt.setInt(5,this.attyear);
pstmt.executeUpdate();
conn.commit();
conn.setAutoCommit(true);
committed = true;
return "home.xhtml";
} catch (Exception e) {
e.printStackTrace();
return "CRM.xhtml";
} finally {
try{
if (!committed) conn.rollback();
if (pstmt != null) pstmt.close();
if (conn != null) conn.close();
}catch(Exception e){
e.printStackTrace();
}
}
}
}
The correct SQL syntax for a multi-insert is:
INSERT INTO
tbl (col1, col2, col3)
VALUES
(val1a, val2a, val3a),
(val1b, val2b, val3b),
(val1c, val2c, val3c),
...
However, in JDBC, you'd better use PreparedStatement#addBatch()
in a loop, followed by a executeBatch()
to do a multi-insert. Here's a kickoff example:
private static final String SQL_INSERT = "INSERT INTO tbl (col1, col2, col3) VALUES (?, ?, ?)";
public void save(List<Entity> entities) throws SQLException {
Connection connection = null;
PreparedStatement statement = null;
try {
connection = database.getConnection();
statement = connection.prepareStatement(SQL_INSERT);
for (Entity entity : entities) {
statement.setObject(1, entity.getCol1());
statement.setObject(2, entity.getCol2());
statement.setObject(3, entity.getCol3());
statement.addBatch();
}
statement.executeBatch();
} finally {
if (statement != null) try { statement.close(); } catch (SQLException ignore) {}
if (connection != null) try { connection.close(); } catch (SQLException ignore) {}
}
}
精彩评论