JDBCUtils工具类
- 私有化构造函数,外界无法直接创建对象
- 提供公共的,静态的,getConnection 方法,用来给外界提供数据库连接
- 提供公共的,静态的,close方法,用来释放资源
package cn.tedu.util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ResourceBundle;
/**
* 这个类用来提供jdcb的工具类
1.1 私有化构造函数,外界无法直接创建对象
1.2 提供公共的,静态的,getConnection 方法,用来给外界提供数据库连接
1.3 提供公共的,静态的,close方法,用来释放资源
1.4 测试类
*/
public class JDBCUtils {
//1,私有化构造函数,外界无法直接创建对象
private JDBCUtils(){}
//只加载一次属性文件
static ResourceBundle rb = null;
static{
//a,,,,读取属性文件
rb = ResourceBundle.getBundle("jdbc");
}
//2,提供公共的,静态的,getConnection 方法,
//用来给外界提供数据库连接
public static Connection getConnection(){
try {
//1,注册驱动
//b,,获取属性文件里的内容
Class.forName(rb.getString("driverClass"));
//2,获取数据库连接
String url=rb.getString("jdbcUrl");
String user=rb.getString("user");
String password=rb.getString("password");
Connection conn = DriverManager.getConnection(url, user, password);
return conn;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
//3,提供公共的,静态的,close方法,
//用来释放资源
public static void close(ResultSet rs, Statement st,Connection conn){
//释放结果集资源
//非空判断,防止空指针异常
if(rs!=null){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}finally{
rs=null;//手动置空
}
}
//释放传输器资源
//非空判断,防止空指针异常
if(st!=null){
try {
st.close();
} catch (SQLException e) {
e.printStackTrace();
}finally{
st=null;//手动置空
}
}
//释放数据库连接资源
//非空判断,防止空指针异常
if(conn!=null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}finally{
conn=null;//手动置空
}
}
}
测试类
package cn.tedu.test;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import org.junit.Test;
import com.mysql.jdbc.Driver;
import cn.tedu.util.JDBCUtils;
/**
* 这个类用来测试工具类
*/
public class TestUtils {
//单元测试方法:@Test + void
@Test
public void hello(){
Connection conn = null;//声明连接对象
Statement st = null;//声明传输器对象
ResultSet rs = null;//声明结果集对象
try {
//1,注册驱动 2,获取数据库连接
conn = JDBCUtils.getConnection();
//3,获取传输器java.sql.Statement
st = conn.createStatement();
// 4,执行SQL。java.sql.ResultSet
String sql ="select * from user";
rs = st.executeQuery(sql);
// 5,遍历结果集
while(rs.next()){
//根据列的索引获取第一列的数据
// String id = rs.getString(1);
//根据列的名字获取第一列的数据
String id = rs.getString("id");
// int id1 = rs.getInt(1);
//根据列的索引获取第二列的数据
String username = rs.getString(2);
//根据列的索引获取第三列的数据
String password = rs.getString(3);
System.out.println(id+username+password);
}
} catch (SQLException e) {
e.printStackTrace();
}finally{//保证资源一定会被释放
// 6,释放资源
JDBCUtils.close(rs, st, conn);
}
}
}
准备数据
配置文件的开发形式
//2,提供公共的,静态的,getConnection 方法,
//用来给外界提供数据库连接
public static Connection getConnection(){
try {
//a,,,,读取属性文件
ResourceBundle rb =
ResourceBundle.getBundle("jdbc");
//1,注册驱动
//b,,获取属性文件里的内容
Class.forName(rb.getString("driverClass"));
//2,获取数据库连接
String url=rb.getString("jdbcUrl");
String user=rb.getString("user");
String password=rb.getString("password");
Connection conn =
DriverManager.getConnection(
url, user, password);
return conn;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}