DBUtils实用前准备
- java数据库驱动mysql-connector-java-5.0.8-bin.jar
- Commons-dbutils-1.4.jar DBUtils工具类的包
- C3p0-0.9.1.2.jar 数据源的驱动包
- c3p0-config.xml 数据库连接池配置文件(其中内容应该包括数据库链接信息等等)
源数据与数据库链接的 DBUtils工具类的使用结构
其中可以使用DBCP和C3P0数据源 具体问题具体看待
c3p0-config.xml 的配置文件是与c3p0相匹配的文件
在c3p0文件中主要是对所要链接的数据库的信息存储(后缀.xml)
示例:
<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
<!-- default-config 默认的配置, -->
<default-config>
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql://localhost/test</property>
<property name="user">root</property>
<property name="password">root</property>
<property name="initialPoolSize">10</property>
<property name="maxIdleTime">30</property>
<property name="maxPoolSize">100</property>
<property name="minPoolSize">10</property>
<property name="maxStatements">200</property>
</default-config>
<!-- This app is massive! -->
<named-config name="oracle">
<property name="acquireIncrement">50</property>
<property name="initialPoolSize">100</property>
<property name="minPoolSize">50</property>
<property name="maxPoolSize">1000</property>
<!-- intergalactoApp adopts a different approach to configuring statement caching -->
<property name="maxStatements">0</property>
<property name="maxStatementsPerConnection">5</property>
<!-- he's important, but there's only one of him -->
<user-overrides user="master-of-the-universe">
<property name="acquireIncrement">1</property>
<property name="initialPoolSize">1</property>
<property name="minPoolSize">1</property>
<property name="maxPoolSize">5</property>
<property name="maxStatementsPerConnection">50</property>
</user-overrides>
</named-config>
</c3p0-config>
使用c3p0数据源操作数据库
//示例:插入
//通过读取配置文件(c3p0-config.xml),放在src下
@Test
public void test02() throws SQLException, PropertyVetoException {
//建立数据源
Connection conn=null;
PreparedStatement ps=null;
try {
ComboPooledDataSource dataSource = new ComboPooledDataSource();//重点!!!
//建立连接
conn= dataSource.getConnection();
String sql="insert into account_1 values(null,?,?)";
ps = conn.prepareStatement(sql);
ps.setString(1, "插入数据");
ps.setInt(2, 7999);
ps.executeUpdate();
}finally {
JDBCUtil.release(conn, ps);
}
}
而对于DBUtils工具是对实例对象数据传输具体操作的简化
其中的
QueryRunner queryRunner=new QueryRunner(new ComboPooledDataSource());
其中已使用c3p0数据源建立连接
Account account=queryRunner.query("select *from account where id=?", new BeanHandler<Account>(Account.class),1);
Account是对已获得数据库信息数据的示例化对象 存储
示例:插入
public static void testInsert() throws SQLException {
//建立连接,链接还是归C3P0,创建数据源
ComboPooledDataSource dataSource = new ComboPooledDataSource();//重点!!! //创建DBUtil工具的对象,简化了增删改查
QueryRunner queryRunner = new QueryRunner(dataSource);
//QueryRunner queryRunner = new QueryRunner(new ComboPooledDataSource());
//插入一条记录
queryRunner.update("insert into account values(?,?,?) ",2,"张飞",9000);
}
Query适合查询
Update适合插入、更新、删除