JDBC工具类
package cn.itcast.utils;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.sql.*;
import java.util.Properties;
/**
* 抽取共性内容, 为了解决重复代码问题
*/
public class JDBCUtils {
private static String url;
private static String username;
private static String password;
private static String driverClass;
//注册驱动
static {// 位置:类中方法外, 特点:只会执行一次, 随着字节码而加载
try {
//读取配置文件中的,用户名,密码,url...., 这里用Properties读取更方便,可以和io流结合!!!!load
Properties pro = new Properties();
//pro.load(new FileReader("day04/src/mysql.properties"));
// 不能直接读src下的配置文件, 因为将来给客户的字节码目录, 不是源码目录, 我们应该读字节码目录的配置文件,
// 这个配置文件放到src下,原因是, 他会帮我们拷贝一份到字节码目录下一份
// 怎么读字节码目录下的配置文件????? ----> 类加载器,因为他可以加载字节码目录下的所有东西!!!!!!!
ClassLoader classLoader = JDBCUtils.class.getClassLoader();
// 使用类加载器去加载配置文件
String path = classLoader.getResource("mysql.properties").getPath();
// System.out.println(path);
pro.load(new FileReader(path));
url = pro.getProperty("url");
username = pro.getProperty("username");
password = pro.getProperty("password");
driverClass = pro.getProperty("driverClass");
Class.forName(driverClass);
// Class.forName("com.mysql.jdbc.Driver");//注册驱动只需要进行一次, 凡是一次性的东西一般情况放在静态代码块中
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
//获取连接
public static Connection getConnection() throws SQLException {
//不能讲url,username,password写死, 应该从配置文件中读取,读取的动作只需要进行一次,应该放到静态代码块中!!!!!!!
return DriverManager.getConnection(url, username, password);
}
//释放资源
public static void close(Connection connection, Statement statement, ResultSet rs) {
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (statement != null) {
try {
statement.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (connection != null) {
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public static void close(Connection connection, Statement statement) {
close(connection, statement, null);
}
} |
|