JDBC工具类:JDBCUtils
目的:简化书写,提高性能
可以被优化的内容有:
1、驱动的注册
在静态代码块中注册驱动
2、连接对象的获取
在静态代码块中获取连接对象需要的参数
创建getConnection()方法获取连接对象
3、资源的释放
重载自定义的close()方法,针对增删改查的不同操作进行资源的释放
a、增删改:close(Connection conn,Statement stmt)
b、查:close(Connection conn,Statement stmt,ResultSet rs)
数据库的连接池
概念:数据库连接池是程序启动时建立的存有足够数据的连接对象所组成的一个容器。
它能够动态对连接对象进行创建、使用、释放。
目的:原因是因为创建连接对象非常消耗资源,可能对数据库的内存造成隐患,从而使用连接池来保证数据库读写的速度,并提高安全性。
使用:
- c3p0-0.9.1.2.jar:自动读取c3p0-config.xml中的数据库配置,并提供连接池
- commons-dbutils-1.6.jar:封装了对数据库进行crud的QueryRunner
- mysql-connector-java-5.1.37-bin.jar:提供连接数据库和对数据库进行操作的实现类
步骤:
1、导包
2、编写c3p0-config.xml配置文件,在src下
<c3p0-config>
<named-config name="mypool">
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql:///school</property>
<property name="user">root</property>
<property name="password">root</property>
<property name="initialPoolSize">3</property>
<property name="maxPoolSize">10</property>
</named-config>
</c3p0-config>
3、获取连接池对象
private static ComboPooledDataSource dataSource = new ComboPooledDataSource("mypool");
public static DataSource getDataSource(){
return dataSource;
}
4、创建QueryRunner对象并指明使用的连接池
QueryRunner qr = new QueryRunner(MyPool.getDataSource());
5、写SQL语句
String sql = "update user set upassword = ? where uid = ?";
6、执行SQL语句
qr.update(sql,Object...可变参数);
可变参数中放入与占位符位置对应的数据