备注:这是编辑在复习中参照传智播客JDBC章节仿制的JDBCUtils工具类。代码基本相同,仅注释方面比源文件有一定的完善度。
package utils;
import java.io.FileReader;
import java.io.IOException;
import java.net.URL;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
/**
* Java连接数据库的快捷工具类
*
* @author WanAkiko
*/
public class JDBCUtils {
private static String url;
private static String user;
private static String password;
private static String driver;
/**
* 利用static的特性在类的加载时读取自定义的jdbc.properties配置文件
*/
static {
try {
// 创建Properties集合类
Properties pro = new Properties();
// 创建ClassLoader类加载器
ClassLoader classLoader = JDBCUtils.class.getClassLoader();
// 使用getResource()方法自动获取src路径下的配置文件
URL resource = classLoader.getResource("jdbc.properties");
// 获取文件的字符串路径
String path = resource.getPath();
// 加载资源文件进内存
pro.load(new FileReader(path));
// 获取数据并赋值(键与值必须一一对应)
url = pro.getProperty("url");
user = pro.getProperty("user");
password = pro.getProperty("password");
driver = pro.getProperty("driver");
// 注册驱动
Class.forName(driver);
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
/**
* 获取连接对象
*
* @return
*/
public static Connection getConnection() throws SQLException {
return DriverManager.getConnection(url, user, password);
}
/**
* 执行DML操作时释放资源的close()方法
*
* @param sta
* @param con
*/
public static void close(Statement sta, Connection con) {
// 关闭规则:先开后关,后开先关
if (null != sta) {
try {
sta.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (null != con) {
try {
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
/**
* 执行DQL操作时释放资源的close()方法
*
* @param rs
* @param sta
* @param con
*/
public static void closeAll(ResultSet rs, Statement sta, Connection con) {
// 关闭规则:先开后关,后开先关
if (null != rs) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (null != sta) {
try {
sta.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (null != con) {
try {
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}