昨天分享了如何利用程式碼寫入、刪除一筆資料,但是一次只能處理一筆資料太慢了,今天要分享如何一次處理多筆資料~~
我們使用到的資料是儲存在二維陣列裡的,大概長這樣,是一個名為students的二維陣列,裡面存了很多項table所要求的(number, name, gender, age),每項資料以{}分開。
Object[][] students = {
{111, "早安", "早不安", 11},
{222, "午安", "午不安", 22},
{333, "晚安", "晚不安", 33},
{444, "半夜安", "半夜不安", 44},
{555, "凌晨安", "凌晨不安",55},
};
我們的新Method叫做insertDatas,在呼叫時需要輸入一個二維陣列,就是上面定義的那個,在中間那段for-each迴圈是把我們所定義的二維陣列內的每筆資料(a,b,c,d)都設定成對應的資料類型(Integer、String)並依次代入每個(?, ?, ?, ?),最後的addBatch是把代入後的每筆資料添加進一個流程(?),在最後的executeBatch()執行完這個流程後,所有的資料就會寫入我們的資料庫啦!
public static void insertDatas(Object[][] students) {
String insertSQL = "INSERT INTO student_information (number, name, gender, age) VALUES (?, ?, ?, ?)";
try (Connection connection = DriverManager.getConnection(JDBC_url, JDBC_user, JDBC_password);
PreparedStatement preparedStatement = connection.prepareStatement(insertSQL)) {
for (Object[] student : students) {
preparedStatement.setInt(1, (Integer) student[0]);
preparedStatement.setString(2, (String) student[1]);
preparedStatement.setString(3, (String) student[2]);
preparedStatement.setInt(4, (Integer) student[3]);
preparedStatement.addBatch();
}
int[] rowsAffected = preparedStatement.executeBatch();
System.out.println("Batch insert successful! " + rowsAffected.length + " row(s) added.");
} catch (SQLException e) {
e.printStackTrace();
}