使用JDBC和C3P0对数据库进行操作

一、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;
	}

}

猜你喜欢

转载自blog.csdn.net/qq_38475119/article/details/81665318