1.什么是DataSource
- DataSource字面意思为数据源,其实它是Java提供的一个连接池的接口,该接口有一个方法,即获取数据库连接
- Apache对DataSource接口进行了实现,实现类为BasicDataSource
2.利用连接池创建连接—(BasicDataSource)
版本1
package pack01_dbcp;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import org.apache.commons.dbcp.BasicDataSource;
public class DBCPUtils {
private static BasicDataSource dataSource = new BasicDataSource();
static{
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost:3306/day05db");
dataSource.setUsername("root");
dataSource.setPassword("123");
}
public static Connection getConnection() throws SQLException{
return dataSource.getConnection();
}
public static void close(ResultSet rs, Statement stat, Connection conn) {
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (stat != null) {
try {
stat.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
版本2
- 将四大信息放到配置文件中的JDBCUtil
- 当然还要配置连接池的一些信息,如连接数量等
- 使用BasicDataSourceFactory
package pack02_dbcp_best;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
import javax.sql.DataSource;
import org.apache.commons.dbcp.BasicDataSourceFactory;
public class DBCPUtils {
private static DataSource dataSource = null;
static{
try{
Properties prop = new Properties();
prop.load(DBCPUtils.class.getClassLoader().getResourceAsStream("dbcpconfig.properties"));
dataSource = BasicDataSourceFactory.createDataSource(prop);
}catch(Exception e){
}
}
public static Connection getConnection() throws SQLException{
return dataSource.getConnection();
}
public static void close(ResultSet rs, Statement stat, Connection conn) {
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (stat != null) {
try {
stat.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
3、操作数据库的主程序如下:
package pack01_dbcp;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class Demo01DBCPTest {
public static void main(String[] args) throws SQLException {
Connection conn = DBCPUtils.getConnection();
PreparedStatement stat = conn.prepareStatement("select * from category;");
ResultSet rs = stat.executeQuery();
while(rs.next()){
int cid = rs.getInt("cid");
String cname = rs.getString("cname");
System.out.println(cid + "\t" + cname);
}
DBCPUtils.close(rs, stat, conn);
}
}