Insert multiple rows into database with Batch Updates and check the result in Java
Description
The following code shows how to insert multiple rows into database with Batch Updates and check the result.
Example
/* www . j a va 2s .c om*/
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;
public class Main {
public static void main(String[] args) throws Exception {
Connection conn = getConnection();
conn.setAutoCommit(false);
Statement st = conn .createStatement();
st.executeUpdate("create table survey (id int, name VARCHAR(30) );");
String INSERT_RECORD = "insert into survey(id, name) values(?,?)";
PreparedStatement pstmt = conn.prepareStatement(INSERT_RECORD);
pstmt.setString(1, "1");
pstmt.setString(2, "name1");
pstmt.addBatch();
pstmt.setString(1, "2");
pstmt.setString(2, "name2");
pstmt.addBatch();
// execute the batch
int[] updateCounts = pstmt.executeBatch();
checkUpdateCounts(updateCounts);
// since there were no errors, commit
conn.commit();
ResultSet rs = st.executeQuery("SELECT * FROM survey");
outputResultSet(rs);
rs.close();
st.close();
conn.close();
}
public static void checkUpdateCounts(int[] updateCounts) {
for (int i=0; i<updateCounts.length; i++) {
if (updateCounts[i] >= 0) {
System.out.println("OK; updateCount="+updateCounts[i]);
}
else if (updateCounts[i] == Statement.SUCCESS_NO_INFO) {
System.out.println("OK; updateCount=Statement.SUCCESS_NO_INFO");
}
else if (updateCounts[i] == Statement.EXECUTE_FAILED) {
System.out.println("Failure; updateCount=Statement.EXECUTE_FAILED");
}
}
}
private static void outputResultSet(ResultSet rs) throws Exception {
ResultSetMetaData rsMetaData = rs.getMetaData();
int numberOfColumns = rsMetaData.getColumnCount();
for (int i = 1; i < numberOfColumns + 1; i++) {
String columnName = rsMetaData.getColumnName(i);
System.out.print(columnName + " ");
}
System.out.println();
System.out.println("----------------------");
while (rs.next()) {
for (int i = 1; i < numberOfColumns + 1; i++) {
System.out.print(rs.getString(i) + " ");
}
System.out.println();
}
}
private static Connection getConnection() throws Exception {
Class.forName("org.hsqldb.jdbcDriver");
String url = "jdbc:hsqldb:mem:data/tutorial";
return DriverManager.getConnection(url, "sa", "");
}
}
The code above generates the following result.