properties配置文件
在开发中获得连接的4个参数(驱动、url、用户名、密码)通常都存在配置文件中,方便后期维护。如果程序需要更换数据库,只需要修改配置文件即可
使用properties配置文件的要求如下:
1、文件的位置:任意,建议在src下
2、文件的名称:任意,扩展名为properties
3、文件的内容:一行一组数据,格式“key=value”
a) key命名自定义,如果是多个单词,习惯使用点分隔。如:jdbc.driver
b) value值不支持中文,如果需要使用非英文字符,需要使用Unicode编码转换
创建配置文件
在项目的根目录(建议在src)下,创建文件,输入“db.properties”文件名
文件内容如下:
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/mydb?characterEncoding=utf-8
username=root
password=123456
配置DButil文件
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/demo_jdbc?characterEncoding=utf-8
username=root
password=123456
package com.oracle.demo06;
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;
public class DButil {
private DButil() {
}
public static Connection getConn() {
try {
InputStream in = DButil.class.getClassLoader().getResourceAsStream("db.properties");
Properties pro = new Properties();
pro.load(in);
String url = pro.getProperty("url");
String username = pro.getProperty("username");
String password = pro.getProperty("password");
String driver = pro.getProperty("driver");
Class.forName(driver);
// 获得连接
Connection conn = DriverManager.getConnection(url, username, password);
return conn;
} catch (Exception ex) {
throw new RuntimeException(ex + "数据库连接失败");
}
}
public static void close(Statement sta, Connection conn) {
if (sta != null) {
try {
sta.close();
} catch (SQLException ex) {
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException ex) {
}
}
}
public static void close(ResultSet rs, Statement sta, Connection conn) {
if (rs != null) {
try {
rs.close();
} catch (SQLException ex) {
}
}
close(sta, conn);
}
}
测试DButil(一定要记得导入数据库驱动包)
package com.oracle.demo06;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class Test {
public static void main(String[] args) throws SQLException {
Connection conn=DButil.getConn();
PreparedStatement pst=conn.prepareStatement("select * from sort");
ResultSet rs=pst.executeQuery();
while(rs.next()){
System.out.println(rs.getString("sname"));
}
}
}