当前位置:Gxlcms > 数据库问题 > JDBCToolsV2

JDBCToolsV2

时间:2021-07-01 10:21:17 帮助过:20人阅读

  1. <span style="color: #000000;">package com.dgd.test;
  2. import com.alibaba.druid.pool.DruidDataSourceFactory;
  3. import javax.sql.DataSource;
  4. import java.sql.Connection;
  5. import java.sql.PreparedStatement;
  6. import java.sql.SQLException;
  7. import java.util.Properties;
  8. </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">class</span><span style="color: #000000;"> JDBCToolsV2 {
  9. </span><span style="color: #0000ff;">private</span> <span style="color: #0000ff;">static</span><span style="color: #000000;"> DataSource ds;
  10. </span><span style="color: #ff0000;"><strong>private static ThreadLocal<Connection> th;
  11. </strong></span><span style="color: #008000;">//</span><span style="color: #008000;">静态代码块,创建数据库连接池</span>
  12. <span style="color: #0000ff;">static</span><span style="color: #000000;"> {
  13. </span><span style="color: #0000ff;">try</span><span style="color: #000000;"> {
  14. Properties p</span>=<span style="color: #0000ff;">new</span><span style="color: #000000;"> Properties();
  15. 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;">));
  16. ds</span>=<span style="color: #000000;"> DruidDataSourceFactory.createDataSource(p);
  17. <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>
  18. } </span><span style="color: #0000ff;">catch</span><span style="color: #000000;"> (Exception e) {
  19. e.printStackTrace();
  20. }
  21. }
  22. </span><span style="color: #ff0000;"><strong>public static Connection getConnection(){
  23. <span style="color: #339966;">//方式1: DriverManger.getConnection();
  24. //方式2: 数据库连接池, ds.getConnection();</span>
  25. try {
  26. Connection conn=th.get(); //获取当前线程的共享连接对象
  27. if(conn==null) //当前线程没有拿过连接,第一个获取连接
  28. {
  29. conn=ds.getConnection();//从线程池中哪一个新的
  30. th.set(conn); //放到当前线程共享变量中
  31. }
  32. return conn;
  33. } catch (SQLException e) {
  34. e.printStackTrace();
  35. return null;
  36. }
  37. }
  38. </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){
  39. </span><span style="color: #0000ff;">try</span><span style="color: #000000;"> {
  40. </span><span style="color: #0000ff;">if</span>(conn!=<span style="color: #0000ff;">null</span><span style="color: #000000;">)
  41. {
  42. conn.close();
  43. }
  44. } </span><span style="color: #0000ff;">catch</span><span style="color: #000000;"> (SQLException e) {
  45. e.printStackTrace();
  46. }
  47. }
  48. </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 {
  49. Connection conn</span>=<span style="color: #000000;">getConnection();
  50. PreparedStatement ps</span>=<span style="color: #000000;">conn.prepareStatement(sql);
  51. </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;">)
  52. {
  53. </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;">) {
  54. ps.setObject(i</span>+<span style="color: #800080;">1</span><span style="color: #000000;">,args[i]);
  55. }
  56. }
  57. </span><span style="color: #0000ff;">int</span> len=<span style="color: #000000;">ps.executeUpdate();
  58. ps.close();
  59. </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> len;
  60. }
  61. }</span>

Test:

  1. <span style="color: #000000;">package com.dgd.test;
  2. import org.junit.Test;
  3. import java.sql.Connection;
  4. import java.sql.SQLException;
  5. </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">class</span><span style="color: #000000;"> TestJDBCToolV1 {
  6. @Test
  7. </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> test2() throws SQLException {
  8. 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;">;
  9. 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;">;
  10. Connection conn</span>=<span style="color: #000000;"> JDBCToolsV2.getConnection();
  11. conn.setAutoCommit(</span><span style="color: #0000ff;">false</span><span style="color: #000000;">);
  12. </span><span style="color: #0000ff;">try</span><span style="color: #000000;"> {
  13. </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;">);
  14. </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;">);
  15. </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;">)
  16. {
  17. conn.commit();
  18. }
  19. </span><span style="color: #0000ff;">else</span><span style="color: #000000;">
  20. {
  21. conn.rollback();
  22. }
  23. } </span><span style="color: #0000ff;">catch</span><span style="color: #000000;"> (SQLException e) {
  24. conn.rollback();
  25. }
  26. conn.setAutoCommit(</span><span style="color: #0000ff;">true</span><span style="color: #000000;">);
  27. JDBCToolsV2.free(conn);
  28. }
  29. }</span>

 

JDBCToolsV2

标签:cat   rop   read   druid   vat   turn   int   trace   actor   

人气教程排行