国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設計 > 正文

JDBC day02

2019-11-11 07:52:15
字體:
來源:轉載
供稿:網(wǎng)友

package day02;import java.sql.Connection;import java.sql.PReparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import org.junit.Test;import smis.unit.JdbcUnit;public class SwTest {	@Test	public void testNoSW() throws Exception {		// 查詢是否有錢		String sql = "SELECT * FROM account WHERE name = ? and balance >= ?";		Connection conn = JdbcUnit.getConn();		PreparedStatement ps = conn.prepareStatement(sql);		ps.setString(1, "張無忌");		ps.setInt(2, 1000);		ResultSet rs = ps.executeQuery();		if (!rs.next()) {			throw new RuntimeException("親,你的余額不足!");		}		// 扣除張無忌的1000		sql = "UPDATE account SET balance = balance - ? WHERE name = ?";		ps = conn.prepareStatement(sql);		ps.setInt(1, 1000);		ps.setString(2, "張無忌");		ps.executeUpdate();		// 趙敏增加1000		sql = "UPDATE account SET balance = balance + ? WHERE name = ?";		ps = conn.prepareStatement(sql);		ps.setInt(1, 1000);		ps.setString(2, "趙敏");		ps.executeUpdate();		JdbcUnit.close(conn, ps, rs);	}	@Test	public void testSW() {		Connection conn = null;		PreparedStatement ps = null;		ResultSet rs = null;		try {			// 查詢是否有錢			String sql = "SELECT * FROM account WHERE name = ? and balance >= ?";			conn = JdbcUnit.getConn();			//取消事務的自動提交			conn.setAutoCommit(false);						ps = conn.prepareStatement(sql);			ps.setString(1, "張無忌");			ps.setInt(2, 1000);			rs = ps.executeQuery();			if (!rs.next()) {				throw new RuntimeException("親,你的余額不足!");			}			// 扣除張無忌的1000			sql = "UPDATE account SET balance = balance - ? WHERE name = ?";			ps = conn.prepareStatement(sql);			ps.setInt(1, 1000);			ps.setString(2, "張無忌");			ps.executeUpdate();			// 趙敏增加1000			sql = "UPDATE account SET balance = balance + ? WHERE name = ?";			ps = conn.prepareStatement(sql);			ps.setInt(1, 1000);			ps.setString(2, "趙敏");			ps.executeUpdate();			//提交事務			conn.commit();		} catch (Exception e) {			e.printStackTrace();						try {				//回滾事務				conn.rollback();			} catch (SQLException e1) {				// TODO Auto-generated catch block				e1.printStackTrace();			}		} finally {			JdbcUnit.close(conn, ps, rs);		}	}}

批處理操作

package day02._02_batch;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.Statement;import org.junit.Test;import smis.unit.JdbcUnit;public class BatchTest {	/**	 * @param args	 */	@Test	//InnoDB 4443	//MyISAM 1220	public void testInsertByStatementBatch() throws Exception{		Connection conn = JdbcUnit.getConn();		Statement st = conn.createStatement();		long begin = System.currentTimeMillis();		for(int i=1;i<=1000;i++){			String sql = "INSERT INTO t_student (age) VALUES ("+i+")";			st.addBatch(sql);			if(i%200==0){				st.executeBatch();//執(zhí)行批量語句				st.clearBatch();//清理批處理中的緩存			}		}		System.out.println(System.currentTimeMillis() - begin);		JdbcUnit.close(conn, st, null);	}		//InnoDB 5308	//MyISAM 2570	public static void main(String[] args) throws Exception {		String sql = "INSERT INTO t_student (age) VALUES (?)";		Connection conn = JdbcUnit.getConn();		PreparedStatement ps = conn.prepareStatement(sql);		long begin = System.currentTimeMillis();		for(int i =0;i<=1000;i++){			ps.setInt(1, i);			ps.addBatch();			if(i%200 == 0){				ps.executeBatch();				ps.clearBatch();				ps.clearParameters(); // 這里和上面的Statement不一樣,需要清理參數(shù)			}		}				System.out.println(System.currentTimeMillis() - begin);		JdbcUnit.close(conn, ps, null);	}	}不知道為什么使用PreparedStatement Junit不行,于是乎直接main吧!

獲取自動生成的主鍵

  在注冊頁面的時候,一開始只需要賬戶和密碼,點擊注冊后會讓你更新資料,這個時候就需要獲取自動生成的主鍵了

連接池思想

為什么必須使用數(shù)據(jù)庫連接池:

    普通的JDBC數(shù)據(jù)庫連接(Connectiond對象)使用 DriverManager來獲取,每次向數(shù)據(jù)庫建立連接的時候都要將 Connection 加載到內存中,再驗證用戶名和密碼(得花費0.05s~1s的時間),數(shù)據(jù)庫的連接是比較昂貴的(創(chuàng)建的成本比較大)。

   需要數(shù)據(jù)庫連接的時候,就向數(shù)據(jù)庫要求一個,執(zhí)行完成后再斷開連接。這樣的方式將會消耗大量的資源和時間。

    數(shù)據(jù)庫的連接資源并沒有得到很好的重復利用.若同時有幾百人甚至幾千人在線,頻繁的進行數(shù)據(jù)庫連接操作將占用很多的系統(tǒng)資源,嚴重的甚至會造成服務器的崩潰

dbcp連接池


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 财经| 鄂伦春自治旗| 呼和浩特市| 易门县| 左贡县| 奇台县| 阳东县| 广安市| 和顺县| 集安市| 哈尔滨市| 岳池县| 南漳县| 梧州市| 巫溪县| 濮阳县| 元阳县| 新绛县| 都兰县| 桂阳县| 海城市| 景洪市| 卢龙县| 冷水江市| 东乌珠穆沁旗| 沙河市| 宿州市| 连州市| 封开县| 成武县| 绵阳市| 丰都县| 石门县| 昌宁县| 余江县| 抚宁县| 辽中县| 杨浦区| 平湖市| 南澳县| 德兴市|