PreparedStatement批量執行sql

案例:mysql

工具方法:sql

public static Connection getConnection(){
		try {
			Class.forName("com.mysql.jdbc.Driver");
			ct = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test","squirrel","xiaoyang");
		} catch (Exception e) {
			e.printStackTrace();
		}
        return ct;		
	}
	
	/**釋放數據庫連接資源:注意數據庫資源關閉的順序*/
	public static void closeConnection(){
		
		try { //注意關閉數據庫資源的前後順序
			if(rs!=null){
					rs.close();
				}if(ps!=null){
					ps.close();
				}if(ct!=null){
					ct.close();
				}
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}

測試方法:數據庫

/**
 * PreparedStatement批量執行sql
 */
	public static void excuteBatchInsertDatabase(){
		
		ct=getConnection();
		
		try {
			ct.setAutoCommit(false);
			ps=ct.prepareStatement("insert into user(name,passwd,age,gender) values(?,?,?,?)");
			
			ps.setString(1, "BBBB");
			ps.setString(2, "BBBB");
			ps.setInt(3, 20);
			ps.setString(4, "F");
			ps.addBatch();
			
			ps.setString(1, "BBBB");
			ps.setString(2, "BBBB");
			ps.setInt(3, 20);
			ps.setString(4, "F");
			ps.addBatch();
			
			/**
			 * 等價於sql語句:
			 * insert into user(name,passwd,age,gender) values
			 *  ("BBBB","BBBB",20,'F'),
			 *  ("BBBB","BBBB",20,'F'); 
			 */
			ps.executeBatch();   //批量執行sql,避免所以單次的insert操做創建多個Connection浪費資源
			ct.commit();
		} catch (Exception e) {
			e.printStackTrace();
			try {
				ct.rollback();
			} catch (SQLException e1) {
				e1.printStackTrace();
			}
		}finally{
			closeConnection();
		}
	}

執行excuteBatchInsertDatabase()方法數據庫記錄:工具

這裏寫圖片描述

數據庫數據記錄代表:sql語句批量執行成功測試

注意:ui

批量查詢最好交由一個事務組控制,若是出現操做異常能夠進行事務回滾,不至於形成部分數據更新部分數據更新失敗的尷尬局面,避免你髒數據污染數據庫3d

相關文章
相關標籤/搜索