将数据库的驱动、url、用户名、密码等信息以键值对的形式存放在properties文件中,工具类初始化时从配置文件中读取所要连接数据库的信息。当需要更改连接的数据库时,只需要更改配置文件即可,而不必改写工具类的代码。
1.在项目中创建一个properties文件,properties文件中的配置文件为,此处为mysql
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/TestDB?useUnicode=true&characterEncoding=utf8&useSSL=false
jdbc.username=root
jdbc.password=123456
2.新建一个数据库DBUtil工具类
package com.sdl.dbutil;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
/*
* 通过读取Properties连接数据库
*/
public class DBUtil {
private static String driver;
private static String url;
private static String username;
private static String password;
/**
* 静态代码块加载配置文件信息
*/
static {
try {
// 1.通过当前类获取类加载器
ClassLoader classLoader = DBUtil.class.getClassLoader();
// 2.通过类加载器的方法获得一个输入流
InputStream in = classLoader.getResourceAsStream("jdbc.properties");
// 3.创建一个properties对象(集合)
Properties props = new Properties();
// 4.加载输入流
props.load(in);
// 5.获取相关参数的值
driver = props.getProperty("jdbc.driver");
url = props.getProperty("jdbc.url");
username = props.getProperty("jdbc.username");
password = props.getProperty("jdbc.password");
} catch (IOException e) {
e.printStackTrace();
}
}
//注册并获取数据库连接
public static Connection getConnection() throws Exception{
//1.注册驱动
Class.forName(driver);
//2.获取数据库连接
Connection coon = DriverManager.getConnection(url, username, password);
return coon;
}
/**
* 释放数据库资源
* @param rs
* @param st
* @param co
*/
public static void relase(ResultSet rs, Statement st, Connection co) {
try {
if(rs != null) {
rs.close();
}
if(st != null) {
st.close();
}
if(co != null) {
co.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
4.测试一下,新建一个测试类DBUtilTest
package com.sdl.dbutil;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class DBUtilTest{
public static void main(String[] args) throws Exception{
Connection coon = DBUtil.getConnection();
//2.书写SQL语句
String sql = "select * from user";
//3.获取SQL语句预编译对象
PreparedStatement ps = coon.prepareStatement(sql);
//4.执行SQL语句
ResultSet rs = ps.executeQuery();
//5.处理结果集
while(rs.next()){
System.out.println(rs.getInt("uid")+" "+rs.getString("username"));
}
//6.释放资源
DBUtil.relase(rs, ps, coon);
}
}
5.测试结果
运行结果
网友评论