时间:2021-07-01 10:21:17 帮助过:20人阅读
- <span style="color: #000000;">package com.dgd.test;
- import com.alibaba.druid.pool.DruidDataSourceFactory;
- import javax.sql.DataSource;
- import java.sql.Connection;
- import java.sql.PreparedStatement;
- import java.sql.SQLException;
- import java.util.Properties;
- </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">class</span><span style="color: #000000;"> JDBCToolsV2 {
- </span><span style="color: #0000ff;">private</span> <span style="color: #0000ff;">static</span><span style="color: #000000;"> DataSource ds;
- </span><span style="color: #ff0000;"><strong>private static ThreadLocal<Connection> th;
- </strong></span><span style="color: #008000;">//</span><span style="color: #008000;">静态代码块,创建数据库连接池</span>
- <span style="color: #0000ff;">static</span><span style="color: #000000;"> {
- </span><span style="color: #0000ff;">try</span><span style="color: #000000;"> {
- Properties p</span>=<span style="color: #0000ff;">new</span><span style="color: #000000;"> Properties();
- p.load(JDBCToolsV1.</span><span style="color: #0000ff;">class</span>.getClassLoader().getResourceAsStream(<span style="color: #800000;">"</span><span style="color: #800000;">druid.properties</span><span style="color: #800000;">"</span><span style="color: #000000;">));
- ds</span>=<span style="color: #000000;"> DruidDataSourceFactory.createDataSource(p);
- <strong><span style="color: #ff0000;">th</span></strong></span><strong><span style="color: #ff0000;">=new ThreadLocal<></span></strong><span style="color: #000000;"><strong><span style="color: #ff0000;">();</span></strong>
- } </span><span style="color: #0000ff;">catch</span><span style="color: #000000;"> (Exception e) {
- e.printStackTrace();
- }
- }
- </span><span style="color: #ff0000;"><strong>public static Connection getConnection(){
- <span style="color: #339966;">//方式1: DriverManger.getConnection();
- //方式2: 数据库连接池, ds.getConnection();</span>
- try {
- Connection conn=th.get(); //获取当前线程的共享连接对象
- if(conn==null) //当前线程没有拿过连接,第一个获取连接
- {
- conn=ds.getConnection();//从线程池中哪一个新的
- th.set(conn); //放到当前线程共享变量中
- }
- return conn;
- } catch (SQLException e) {
- e.printStackTrace();
- return null;
- }
- }
- </strong></span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> free( Connection conn){
- </span><span style="color: #0000ff;">try</span><span style="color: #000000;"> {
- </span><span style="color: #0000ff;">if</span>(conn!=<span style="color: #0000ff;">null</span><span style="color: #000000;">)
- {
- conn.close();
- }
- } </span><span style="color: #0000ff;">catch</span><span style="color: #000000;"> (SQLException e) {
- e.printStackTrace();
- }
- }
- </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">int</span><span style="color: #000000;"> update3( String sql, Object... args) throws SQLException {
- Connection conn</span>=<span style="color: #000000;">getConnection();
- PreparedStatement ps</span>=<span style="color: #000000;">conn.prepareStatement(sql);
- </span><span style="color: #0000ff;">if</span>(args!=<span style="color: #0000ff;">null</span> && args.length><span style="color: #800080;">0</span><span style="color: #000000;">)
- {
- </span><span style="color: #0000ff;">for</span> (<span style="color: #0000ff;">int</span> i = <span style="color: #800080;">0</span>; i <args.length ; i++<span style="color: #000000;">) {
- ps.setObject(i</span>+<span style="color: #800080;">1</span><span style="color: #000000;">,args[i]);
- }
- }
- </span><span style="color: #0000ff;">int</span> len=<span style="color: #000000;">ps.executeUpdate();
- ps.close();
- </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> len;
- }
- }</span>
Test:
- <span style="color: #000000;">package com.dgd.test;
- import org.junit.Test;
- import java.sql.Connection;
- import java.sql.SQLException;
- </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">class</span><span style="color: #000000;"> TestJDBCToolV1 {
- @Test
- </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> test2() throws SQLException {
- String sql1</span>=<span style="color: #800000;">"</span><span style="color: #800000;">INSERT INTO COURSE VALUES(NULL,?)</span><span style="color: #800000;">"</span><span style="color: #000000;">;
- String sql2</span>=<span style="color: #800000;">"</span><span style="color: #800000;">INSERT INTO COURSE VALUES(NULL,?)</span><span style="color: #800000;">"</span><span style="color: #000000;">;
- Connection conn</span>=<span style="color: #000000;"> JDBCToolsV2.getConnection();
- conn.setAutoCommit(</span><span style="color: #0000ff;">false</span><span style="color: #000000;">);
- </span><span style="color: #0000ff;">try</span><span style="color: #000000;"> {
- </span><span style="color: #0000ff;">int</span> len1=JDBCToolsV2.update3(sql1,<span style="color: #800000;">"</span><span style="color: #800000;">美术</span><span style="color: #800000;">"</span><span style="color: #000000;">);
- </span><span style="color: #0000ff;">int</span> len2=JDBCToolsV2.update3(sql2,<span style="color: #800000;">"</span><span style="color: #800000;">体育</span><span style="color: #800000;">"</span><span style="color: #000000;">);
- </span><span style="color: #0000ff;">if</span>(len1><span style="color: #800080;">0</span> && len2><span style="color: #800080;">0</span><span style="color: #000000;">)
- {
- conn.commit();
- }
- </span><span style="color: #0000ff;">else</span><span style="color: #000000;">
- {
- conn.rollback();
- }
- } </span><span style="color: #0000ff;">catch</span><span style="color: #000000;"> (SQLException e) {
- conn.rollback();
- }
- conn.setAutoCommit(</span><span style="color: #0000ff;">true</span><span style="color: #000000;">);
- JDBCToolsV2.free(conn);
- }
- }</span>
JDBCToolsV2
标签:cat rop read druid vat turn int trace actor