1. 程式人生 > >JDBC操作數據庫之批處理

JDBC操作數據庫之批處理

解決方案 print 數據庫服務器 密碼 red rep 參數 connect jdb

JDBC開發中,操作數據庫需要和數據庫建立連接,然後將要執行的SQL語句發送到數據庫服務器,最後關閉數據庫連接,都是按照這樣的操做的,如果按照此流程要執行多條SQL語句,那麽就要建立多個數據庫連接,將時間浪費在數據庫連接上,針對這樣的問題,JDBC給出了一個很好的解決方案------JDBC的批處理。

示例代碼

(1)index.jsp

技術分享
 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"
> 4 <html> 5 <head> 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 7 <title>批處理操作</title> 8 </head> 9 <body> 10 <jsp:useBean id="batch" class="com.java.Batch"></jsp:useBean> 11 <% 12 //執行批量插入操作 13 int
row = batch.saveBatch(); 14 out.print("批量插入了【"+row+"條信息】"); 15 %> 16 </body> 17 </html>
查看代碼

(2)Batch類

 1 package com.java;
 2 
 3 import java.sql.Connection;
 4 import java.sql.DriverManager;
 5 import java.sql.PreparedStatement;
 6 import java.sql.SQLException;
 7 import
java.util.Random; 8 9 public class Batch { 10 public Connection getConnection() { 11 //數據庫連接 12 Connection conn = null; 13 try { 14 //加載數據庫驅動,註冊到驅動管理器中 15 Class.forName("com.mysql.jdbc.Driver"); 16 //數據庫連接字符串 17 String url = "jdbc:mysql://localhost:3306/test"; 18 //數據庫用戶名 19 String username = "root"; 20 //數據庫密碼 21 String password = "123456"; 22 //創建Connection連接 23 conn = DriverManager.getConnection(url,username,password); 24 25 }catch(ClassNotFoundException e) { 26 e.printStackTrace(); 27 }catch(SQLException e) { 28 29 e.printStackTrace(); 30 } 31 //返回數據庫連接 32 return conn; 33 } 34 /** 35 * 批量添加數據 36 * @return 所影響的行數 37 */ 38 public int saveBatch() { 39 //行數 40 int row = 0; 41 //獲取數據庫連接 42 Connection conn = getConnection(); 43 try { 44 //插入數據的SQL語句 45 String sql = "insert into book(id,name,price,bookCount,author) values(?,?,?,?,?)"; 46 //創建PrepareStatement 47 PreparedStatement ps = conn.prepareStatement(sql); 48 //實例化Random 49 Random random = new Random(); 50 //循環添加數據 51 for(int i=10;i<20;i++) { 52 //對SQL語句中的第一個參數賦值 53 ps.setInt(1, i+1); 54 //對SQL語句中的第二個參數賦值 55 ps.setString(2, "圖書"+i); 56 //對SQL語句中的第三個參數賦值 57 ps.setDouble(3, i%2); 58 //對SQL語句中的第四個參數賦值 59 ps.setInt(4, random.nextInt(5)+10); 60 //對SQL語句中的第五個參數賦值 61 ps.setString(5, "作者"+i); 62 //添加批處理命令 63 ps.addBatch(); 64 } 65 //執行批處理操作並返回計數組成的數組 66 int[] rows = ps.executeBatch(); 67 //對行數賦值 68 row = rows.length; 69 //關閉PrepareStatement 70 ps.close(); 71 //關閉Connection 72 conn.close(); 73 }catch(Exception e) { 74 e.printStackTrace(); 75 } 76 77 return row; 78 } 79 }

程序運行結果:

技術分享

JDBC操作數據庫之批處理