学数据库真是枯燥,不如写个网页去调用数据库,又复习了JAVA,有学习了数据库,真是一举两得。
在使用连接池对数据库进行连接时,因为好久没弄,好多地方都忘记了,刚好写到这里整理一下。
首先准备相应的 jar包 ,分别是
1.commons-dbcp2-2.7.0.jar
2.commons-logging-1.2.jar
3.commons-pool2-2.8.0.jar
4.mysql-connector-java-8.0.20.jar
jar 链接如下 https://files.cnblogs.com/files/aierben/DBCP.zip
第一个包对后面的几个包有依赖,缺少的话,会产生找不到或无法加载主类的错误
然后新建一个配置文件
内容如下 (其中需要注意的时,如果是记事本建立的文件,记得保存时编码格式选择utf8,不然注释部分会显示乱码)
//这里的driveClassName 和 url 是 java8 所使用的mysql-connector 推荐的链接方式,以前的驱动方式会在JAVA8环境下会报错
dbcpconfig.properties
driverClassName=com.mysql.cj.jdbc.Driver #url url=jdbc:mysql://localhost:3306/highperformancesql?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT #用户名 username=用户名 #密码 password=密码 #初试连接数 initialSize=30 #最大活跃数 maxTotal=30 #最大idle数 maxIdle=10 #最小idle数 minIdle=5 #最长等待时间(毫秒) maxWaitMillis=1000 #程序中的连接不使用后是否被连接池回收(该版本要使用removeAbandonedOnMaintenance和removeAbandonedOnBorrow) #removeAbandoned=true removeAbandonedOnMaintenance=true removeAbandonedOnBorrow=true #连接在所指定的秒数内未使用才会被删除(秒)(为配合测试程序才配置为1秒) removeAbandonedTimeout=1
然后新建java工具类(DBCPUtil)
1 public class DBCPUtil { 2 3 private static DataSource ds ; 4 5 static 6 7 { 8 9 try 10 11 { 12 13 //获取配置文件字节流 14 15 InputStream is = DBCPUtil.class.getClassLoader().getResourceAsStream("dbcpconfig.properties"); 16 17 //配置文件类 18 19 Properties props = new Properties(); 20 21 //配置文件字节流载入到配置文件对象 22 23 props.load(is); 24 25 //数据库对象获取数据源 26 27 ds = BasicDataSourceFactory.createDataSource(props); 28 29 }catch(Exception e) { 30 31 e.printStackTrace(); 32 33 } 34 35 } 36 37 //返回数据库对象对应连接 38 39 public static Connection getConnection() { 40 41 try { 42 43 return ds.getConnection(); 44 45 } catch (SQLException e) { 46 47 throw new RuntimeException(); 48 49 } 50 51 } 52 53 //释放数据库结果集对象,连接对象,语句操作对象 54 55 public static void release(ResultSet rs,Statement stmt,Connection conn) 56 57 { 58 59 if(rs != null) 60 61 { 62 63 try { 64 65 rs.close(); 66 67 } catch (SQLException e) { 68 69 e.printStackTrace(); 70 71 } 72 73 rs = null; 74 75 76 77 } 78 79 if(stmt != null) 80 81 { 82 83 try { 84 85 stmt.close(); 86 87 } catch (SQLException e) { 88 89 e.printStackTrace(); 90 91 } 92 93 stmt = null; 94 95 } 96 97 if(conn != null) 98 99 { 100 101 try { 102 103 conn.close(); 104 105 } catch (SQLException e) { 106 107 e.printStackTrace(); 108 109 } 110 111 conn = null; 112 113 } 114 115 } 116 117 }
这样你就可以在其他的程序中通过获取 Connection 对象进行数据库操作了