一、JDBC对数据库进行操作:
一定要注意lib下一定要导包
//使用JDBC连接数据库
//1.注册驱动
Class.forName("com.mysql.jdbc.Driver");
//2.获取connection连接
Connection conn=DriverManager.getConnection("JDBC:mysql:///数据库名","用户名","密码");
//3.获取执行平台
Statement stmt=conn.CreateStatement();
//4.执行SQL指令
stmt.executeUpdata("更新的数据库语句");
//如果是查询则使用stmt.executeQuery("SQL语句");
//5.关闭执行平台
stmt.close();
//6.关闭connection
conn.close();
二、使用C3P0进行数据库操作:
C3P0需要两个配置文件一个DataSourceUtils.java的工具文件
配置文件c3p0-config.xml如下:
<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
<default-config>
<property name="user">用户名</property>
<property name="password">密码</property>
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql:///数据库名</property>
</default-config>
</c3p0-config>
DataSourceUtils.java放到项目的util工具包中:
package com.sicau.utils;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.sql.DataSource;
import com.mchange.v2.c3p0.ComboPooledDataSource;
public class DataSourceUtils {
private static DataSource dataSource = new ComboPooledDataSource();
private static ThreadLocal<Connection> tl = new ThreadLocal<Connection>();
// 直接可以获取一个连接池
public static DataSource getDataSource() {
return dataSource;
}
// 获取连接对象
public static Connection getConnection() throws SQLException {
Connection con = tl.get();
if (con == null) {
con = dataSource.getConnection();
tl.set(con);
}
return con;
}
// 开启事务
public static void startTransaction() throws SQLException {
Connection con = getConnection();
if (con != null) {
con.setAutoCommit(false);
}
}
// 事务回滚
public static void rollback() throws SQLException {
Connection con = getConnection();
if (con != null) {
con.rollback();
}
}
// 提交并且 关闭资源及从ThreadLocall中释放
public static void commitAndRelease() throws SQLException {
Connection con = getConnection();
if (con != null) {
con.commit(); // 事务提交
con.close();// 关闭资源
tl.remove();// 从线程绑定中移除
}
}
// 关闭资源方法
public static void closeConnection() throws SQLException {
Connection con = getConnection();
if (con != null) {
con.close();
}
}
public static void closeStatement(Statement st) throws SQLException {
if (st != null) {
st.close();
}
}
public static void closeResultSet(ResultSet rs) throws SQLException {
if (rs != null) {
rs.close();
}
}
}
每次使用只需要将这两个文件放到指定的目录下即可,xml配置文件防御src目录下,DataSourceUtils.java放到项目的util包下即可
在执行数据库操作的dao文件中只需要如以下格式写即可
package com.sicau.dao;
import java.sql.SQLException;
import java.util.List;
import com.sicau.utils.DataSourceUtils;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import com.sicau.domain.Product;
public class ProductDao {
public List<Product> findProductList() throws SQLException {
//1.连接数据库
QueryRunner runner=new QueryRunner(DataSourceUtils.getDataSource());
String sql="Select * from product";
//2.执行数据库操作语句,这里qurey是查询,返回一个列表所以要用下面这种格式,数据库更新只需要runner.updata("数据库更新语句");
List<Product>products=runner.query(sql,new BeanListHandler<Product>(Product.class));
return products;
}
}