方式一:使用相对路径
import java.io.IOException;
import java.io.InputStream;
import java.sql.*;
import java.util.Properties
public final class DBUtil{
//数据库驱动
private static String driver ="";
//数据库url
private static String url = "";
//用户名
private static String user= "";
//密码
private static String pwd ="";
static{
try{
InputStream in = DBUtil.class.getClassLoader().getSystemResource("config/db.properties");
Properties props = new Properties();
props.load(in);
driver = props.getProperties("driver");
url = props.getProperties("url");
user= props.getProperties("user");
pwd = props.getProperties("pwd");
Class.forName(driver);
}catch( IOException | ClassNotFoundException e){
System.out.println("load jdbc driver failed ! | driver:"+driver);
e.printStackTrace();
}
}
//获取connection连接
public static Connection getConnection() throws SQLException{
return DriverManager.getConnection(url,user,pwd);
}
//关闭资源
public static void close (Connection connection,Statement statement, ResultSet resultSet){
closeConnection(connection);
closeStatement(statement);
closeResultSet(resultSet);
}
//关闭连接
public static void closeConnection(Connection conn){
if(conn != null){
try{
conn.close();
}catch(SQLException e){
e.printStackTrace();
System.out.println("closeConnection failed !");
}
}
}
public static void closeStatement(Statement st){
if(st!= null){
try{
st.close();
}catch(SQLException e){
e.printStackTrace();
System.out.println("closeStatementfailed !");
}
}
}
public static void closeResultSet(ResultSet rs){
if(rs!= null){
try{
rs.close();
}catch(SQLException e){
e.printStackTrace();
System.out.println("closeResultSet failed !");
}
}
}
}
特点:如果是springboot项目,打包的时候则会将db.properties配置文件直接打到jar包里去,导致外面可见的db.properties形同虚设,跟写死没什么区别!
以上是DBUtil 类,下面是db.properties配置文件
driver=oracle.jdbc.driver.OracleDriver
url=jdbc:oracle:thin:@127.0.0.1:1521:orcl
user=root
pwd=root
方式二:固定的配置文件路径
package cn.falcon.firs.Utils;
import com.mysql.jdbc.Connection;
import org.springframework.core.io.DefaultResourceLoader;
import org.springframework.core.io.Resource;
import org.springframework.core.io.ResourceLoader;
import java.io.IOException;
import java.io.InputStream;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
public class DBUtil {
private static ResourceLoader resourceLoader = new DefaultResourceLoader();
//数据库驱动
private static String driver ="";
//数据库url
private static String url = "";
//用户名
private static String user= "";
//密码
private static String pwd ="";
static{
InputStream is = null;
try{
String path = "E:\\config\\db.properties";
Properties props = new Properties();
Resource resource = resourceLoader.getResource(path);
is = resource.getInputStream();
props.load(is);
driver = props.getProperty("driver");
url = props.getProperty("url");
user= props.getProperty("user");
pwd = props.getProperty("pwd");
System.out.println("driver:"+driver+",url:"+url+",user:"+user+",pwd:"+pwd);
Class.forName(driver);
}catch( IOException | ClassNotFoundException e){
System.out.println("load jdbc driver failed ! | driver:"+driver);
e.printStackTrace();
}finally {
if(is != null){
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
//获取connection连接
public static Connection getConnection() throws SQLException {
return (Connection) DriverManager.getConnection(url,user,pwd);
}
//关闭资源
public static void close (Connection connection, Statement statement, ResultSet resultSet){
closeConnection(connection);
closeStatement(statement);
closeResultSet(resultSet);
}
//关闭连接
public static void closeConnection(Connection conn){
if(conn != null){
try{
conn.close();
}catch(SQLException e){
e.printStackTrace();
System.out.println("closeConnection failed !");
}
}
}
public static void closeStatement(Statement st){
if(st!= null){
try{
st.close();
}catch(SQLException e){
e.printStackTrace();
System.out.println("closeStatementfailed !");
}
}
}
public static void closeResultSet(ResultSet rs){
if(rs!= null){
try{
rs.close();
}catch(SQLException e){
e.printStackTrace();
System.out.println("closeResultSet failed !");
}
}
}
}
方式三: 适用与SpringBoot项目,可配置在yaml配置文件中或aplication.properties文件;
使用时直接将DBUtil类通过@Autowired 注入,即可使用
package cn.falcon.firs.Utils;
import com.mysql.jdbc.Connection;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
@Configuration
public class DBUtil {
//数据库驱动
@Value("${driver}")
private String driver ="";
//数据库url
@Value("${url}")
private String url = "";
//用户名
@Value("${user}")
private String user= "";
//密码
@Value("${pwd}")
private String pwd ="";
//获取connection连接
public Connection getConnection() throws SQLException {
java.sql.Connection conn = null;
try {
Class.forName(driver);
conn = DriverManager.getConnection(url,user,pwd);
System.out.println("数据库加载完成,driver:"+driver);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
return (Connection) conn;
}
//关闭资源
public static void close (Connection connection, Statement statement, ResultSet resultSet){
closeConnection(connection);
closeStatement(statement);
closeResultSet(resultSet);
}
//关闭连接
public static void closeConnection(Connection conn){
if(conn != null){
try{
conn.close();
}catch(SQLException e){
e.printStackTrace();
System.out.println("closeConnection failed !");
}
}
}
public static void closeStatement(Statement st){
if(st!= null){
try{
st.close();
}catch(SQLException e){
e.printStackTrace();
System.out.println("closeStatementfailed !");
}
}
}
public static void closeResultSet(ResultSet rs){
if(rs!= null){
try{
rs.close();
}catch(SQLException e){
e.printStackTrace();
System.out.println("closeResultSet failed !");
}
}
}
}