数据库连接JDBC和数据库连接池C3P0自定义的java封装类
时间:2021-07-01 10:21:17
帮助过:31人阅读
import java.sql.*
;
2
3 import utils.GlobalConstant;
4
5 public class JDBCUtil {
6
7 private JDBCUtil() {
8
9 }
10
11 /**
12 * 获取JDBC的数据库连接
13 */
14 public static Connection getConnection() {
15 Connection conn =
null;
16 try {
17 Class.forName(GlobalConstant.CONNECTION_DRIVER);
18 conn =
DriverManager.getConnection(GlobalConstant.CONNECTION_URL, GlobalConstant.CONNECTION_USER,
19 GlobalConstant.CONNECTION_PASSWORD);
20 }
catch (Exception e) {
21 e.printStackTrace();
22 }
23 /*
24 * try { conn = DataSourceService.getConnection(); } catch (SQLException
25 * e) { e.printStackTrace(); }
26 */
27 return conn;
28 }
29
30 private static void close(ResultSet rs, Statement sm, Connection conn) {
31 try {
32 if (rs !=
null)
33 rs.close();
34 if (sm !=
null)
35 sm.close();
36 if (conn !=
null)
37 conn.close();
38 }
catch (Exception e) {
39 e.printStackTrace();
40 }
41 }
42
43 /**
44 * 关闭数据库的结果集
45 *
46 * @param rs
47 * 需要关闭的结果集
48 */
49 public static void close(ResultSet rs) {
50 try {
51 if (rs !=
null)
52 rs.close();
53 }
catch (Exception e) {
54 e.printStackTrace();
55 }
56 }
57
58 /**
59 * 将一个标准的sql查询语句在数据库中查询,并且返回一个对应的结果集。
60 *
61 * @param sql
62 * 标准的sql查询语句
63 */
64 public static ResultSet doQuery(String sql) {
65 Connection conn =
getConnection();
66 if (conn ==
null)
67 return null;
68 Statement sm =
null;
69 ResultSet rs =
null;
70 try {
71 sm =
conn.createStatement();
72 rs =
sm.executeQuery(sql);
73 return rs;
74 }
catch (SQLException e) {
75 e.printStackTrace();
76 }
finally {
77 if (rs ==
null && sm !=
null) {
78 close(
null, sm, conn);
79 }
80 // close(null, sm, conn);这句肯定不行
81 }
82 return rs;
83 }
84
85 /**
86 * 将一个更新语句和对应的参数进行查询,并返回一个整形结果
87 *
88 * @param sql
89 * 数据库中的更新语句
90 * @param paras
91 * sql中对应的参数
92 */
93 public static int doUpdate(String sql, String[] paras) {
94 Connection conn =
getConnection();
95 if (conn ==
null)
96 return 0
;
97 PreparedStatement psm =
null;
98 int result = 0
;
99 try {
100 psm =
conn.prepareStatement(sql);
101 for (
int i = 0; i < paras.length; i++
) {
102 psm.setString(i + 1
, paras[i]);
103 }
104 result =
psm.executeUpdate();
105 }
catch (Exception e) {
106 e.printStackTrace();
107 }
finally {
108 close(
null, psm, conn);
109 }
110 return result;
111 }
112 }
JDBCUtils
以下的C3P0的数据库连接池除了需要以上的JDBC的驱动包,还需以下jar包:
如 c3p0-0.9.1.2.jar (0.9.1.2代表的是版本序列号)
为了方便使用,可以用其他的jar包进行辅助封装(dbUtils的jar)
如 commons-dbutils-1.3.jar (1.3代表的是版本序列号)
二、C3P0数据库连接池的封装:(java连接MySQL)
----------------不需要xml的配置文件
1 import java.beans.PropertyVetoException;
2 import java.sql.Connection;
3 import javax.sql.DataSource;
4 import com.mchange.v2.c3p0.ComboPooledDataSource;
5
6 import utils.GlobalConstant;
7
8 public class DataSourceUtils {
9 private static DataSource ds;
10
11 static {
12 /*
13 * 从配置文件读取配置信息 <?xml version="1.0" encoding="UTF-8"?> <c3p0-config> <!--
14 * 默认配置,如果没有指定则使用这个配置 --> <default-config> <property
15 * name="checkoutTimeout">30000</property> <property
16 * name="idleConnectionTestPeriod">30</property> <property
17 * name="initialPoolSize">3</property> <property
18 * name="maxIdleTime">30</property> <property
19 * name="maxPoolSize">10</property> <property
20 * name="minPoolSize">3</property> <property
21 * name="maxStatements">50</property> <property
22 * name="acquireIncrement">3</property><!-- 如果池中数据连接不够时一次增长多少个 -->
23 * <property name="driverClass">com.mysql.jdbc.Driver</property>
24 * <property name="jdbcUrl">
25 * <![CDATA[jdbc:mysql://127.0.0.1:3306/project?useUnicode=true&
26 * characterEncoding=UTF-8]]> </property> <property
27 * name="user">root</property> <property
28 * name="password">789123</property> </default-config> </c3p0-config>
29 *
30 * ds = // 默认的读取c3p0-config.xml中默认配置 new ComboPooledDataSource();
31 */
32 ComboPooledDataSource cpds = null;
33 try {
34 cpds = new ComboPooledDataSource();
35 cpds.setCheckoutTimeout(30000);
36 cpds.setIdleConnectionTestPeriod(30);
37 cpds.setInitialPoolSize(3);
38 cpds.setMaxIdleTime(30);
39 cpds.setMaxPoolSize(70);
40 cpds.setMaxStatementsPerConnection(100);
41 cpds.setMinPoolSize(3);
42 cpds.setMaxStatements(75);
43 cpds.setAcquireIncrement(3);
44 cpds.setDriverClass(GlobalConstant.CONNECTION_DRIVER);
45 cpds.setJdbcUrl(GlobalConstant.CONNECTION_URL);
46 cpds.setUser(GlobalConstant.CONNECTION_USER);
47 cpds.setPassword(GlobalConstant.CONNECTION_PASSWORD);
48 ds = cpds;
49 } catch (PropertyVetoException e) {
50 System.out.println("与MySQL数据库连接失败!");
51 }
52 }
53
54 private DataSourceUtils() {
55
56 }
57
58 public static DataSource getDatasSource() {
59 return ds;
60 }
61
62 public static Connection getConnection() {
63 Connection con = null;
64 try {
65 con = ds.getConnection();// 每一次从ds中获取一个新的连接
66 } catch (Exception e) {
67 e.printStackTrace();
68 }
69 return con;
70 }
71 }
DataSourceUtils
如果要验证其可用性,你们可以修改下以上的用户名,密码,数据库名
之后在自己的MySQL建立自己相应的数据库即可测试。
数据库连接JDBC和数据库连接池C3P0自定义的java封装类
标签: