因為每次使用 JDBC 都要寫一些重復(fù)的代碼,我們可以直接抽取出一個工具類來使用。我們把主要目的是想通過工具類返回數(shù)據(jù)庫連接闷供,然后就可以直接通過連接來操作了拳芙。
JDBCUtilsConfig工具類
package utils;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;
public class JDBCUtilsConfig {
private static Connection conn;
private static String driverClass;
private static String url;
private static String user;
private static String password;
static {
try {
//1.先調(diào)用加載配置文件的方法,讀取配置文件
ReadingConfig();
//2.加載驅(qū)動
Class.forName(driverClass);
//3.連接數(shù)據(jù)庫
conn = DriverManager.getConnection(url, user, password);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//讀取配置文件
private static void ReadingConfig() throws Exception {
//1.使用類加載器讀取配置文件
InputStream inStream = JDBCUtilsConfig.class.getClassLoader().getResourceAsStream("database.properties");
//2.獲取Properties對象
Properties pro = new Properties();
//3.加載輸入流
pro.load(inStream);
//4.解析對應(yīng)的資源
driverClass = pro.getProperty("driver");
url = pro.getProperty("url");
user = pro.getProperty("user");
password = pro.getProperty("password");
}
//返回數(shù)據(jù)庫連接
public static Connection Getconnection() {
return conn;
}
//關(guān)閉連接,釋放資源
public static void CloseSource(ResultSet rs,PreparedStatement ptmt,Connection conn) {
if(rs != null) {
try {
rs.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(ptmt != null) {
try {
ptmt.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(conn != null) {
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
數(shù)據(jù)庫的連接
package DatabaseConnection;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import domain.Student;
import utils.JDBCUtilsConfig;
public class practice05 {
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
//1.讀寫配置文件埂息,獲取數(shù)據(jù)庫連接
Connection conn = JDBCUtilsConfig.Getconnection();
//System.out.println(conn);
//2.準(zhǔn)備sql語句
String sql = "select *from student";
//3.預(yù)編譯
PreparedStatement ptmt = conn.prepareStatement(sql);
//4.執(zhí)行查詢
ResultSet rs = ptmt.executeQuery();
//5.處理獲取到的結(jié)果
List<Student> liststu = new ArrayList<Student>();
while(rs.next()) {
Student student = new Student(rs.getString("Sno"),rs.getString("Sname"),rs.getString("Ssex"),rs.getInt("Sage"),rs.getString("Sdept"),rs.getString("S_entrance"));
liststu.add(student);
}
//6.使用迭代器遍歷
Iterator<Student> iterator = liststu.iterator();
while(iterator.hasNext()) {
Student stu = iterator.next();
System.out.println(stu);
}
//7.釋放資源
JDBCUtilsConfig.CloseSource(rs, ptmt, conn);
}
}