抽取JDBC工具类:JDBCUtils
抽取JDBC工具类:JdbcUtils
*目的:简化书写
*分析:
1.注册驱动也抽取
2.抽取一个方法获取连接对象
*需求:不想传递参数,还得保证工具类的通用性。
*解决:配置文件
*jdbc.properties
*url=jdbc:mysql://master:3306/shujia
*username=root
*password=123456
*driver=com.mysql.jdbc.Driver
配置文件
我们在项目下新建一个文件夹:resources,并设为资源文件夹,然后创建jdbc.properties配置文件。
jdbc.properties配置文件内容如下:
//连接mysql配置文件
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://master:3306/shujia
username=root
password=123456
JDBC工具类:JdbcUtils
public class JdbcUtils {
private static String driver;
private static String url;
private static String username;
private static String password;
//static代码块
static {
Properties ps = new Properties();
InputStream resource = ClassLoader.getSystemClassLoader().getResourceAsStream("jdbc.properties");
try {
ps.load(resource);
driver = ps.getProperty("driver");
url = ps.getProperty("url");
username = ps.getProperty("username");
password = ps.getProperty("password");
//注册驱动
Class.forName(driver);
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
/**
* getConnection()
* @return
*/
public Connection getConnection() throws SQLException {
Connection conn = DriverManager.getConnection(url,username,password);
return conn;
}
/**
* 释放资源
* @param rs
* @param ps
* @param conn
*/
public void close(ResultSet rs, PreparedStatement ps,Connection conn){
if (rs !=null){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (ps !=null){
try {
ps.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn !=null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
测试工具类连接Mysql:
public class JdbcDemo01 {
public static void main(String[] args) {
JdbcUtils jdbcUtils = new JdbcUtils();
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
//获取连接
conn = jdbcUtils.getConnection();
//定义sql
String sql = "select * from emp1 where id= ?";
//获取执行sql对象
ps = conn.prepareStatement(sql);
ps.setInt(1,1004);
rs = ps.executeQuery();
while (rs.next()){
int anInt = rs.getInt(1);
System.out.println(anInt);
}
} catch (SQLException e) {
e.printStackTrace();
}finally {
jdbcUtils.close(rs,ps,conn);
}
}
}