JDBC訪問資料庫之MySql
阿新 • • 發佈:2018-12-30
what: jdbc是一組API
when: 應用程式和資料庫通過JDBC實現資料互動
how:(嚴格來說分為以下五步:
Class.forName()載入驅動——
DriverManager獲取Connection連線——
建立Statement(適用於簡單的SQL語句,消耗小)/PreparedStatement(擴充套件了statement,開銷大),資料庫執行SQL語句——
返回ResultSet查詢結果——
釋放資源
)
第一步,放在一個公共包裡面(表已經建立好的基礎上,並未放在配置檔案中),然後連線:
public class DBUtils { public static Connection getConn() { Connection conn = null; // MySQL的JDBC URL編寫方式:jdbc:mysql://主機名稱:連線埠/資料庫的名稱?引數=值 // 避免中文亂碼要指定useUnicode和characterEncoding // 執行資料庫操作之前要在資料庫管理系統上建立一個數據庫,名字自己定, String url = "jdbc:mysql://localhost:3306/StudySystem?" + "user=root&password=123456&useUnicode=true&characterEncoding=UTF8"; try { Class.forName("com.mysql.jdbc.Driver");// 動態載入mysql驅動 // 一個Connection代表一個數據庫連線 conn = DriverManager.getConnection(url); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } return conn; } }
第二步:在需要的物件下執行相應的操作,此操作為獲取
public List<Student> getStudent() { //controller--service--dao通過三層呼叫寫在此資料庫操作類 //建立資料庫連線物件 Connection conn = DBUtils.getConn(); ResultSet rs=null; //集合類來儲存student這種型別 List<Student> stus=new ArrayList<Student>(); String sql = "select * from STUDENT "; try { PreparedStatement pStatement = conn.prepareStatement(sql);//預處理 rs = pStatement.executeQuery(); //執行 while(rs.next())//將查詢的結果放在集合類中,只要有下一條資料就不斷的執行 { Student s=new Student();//建立學生物件 s.setId(rs.getInt(1)); s.setStudentNo(rs.getString(2)); s.setPassword(rs.getString(3)); s.setStudentName(rs.getString(4)); s.setSex(rs.getString(5)); s.setSubject(rs.getString(6)); s.setStuClass(rs.getString(7)); stus.add(s);//每建立一個就放在物件中 } } catch (SQLException e) { e.printStackTrace(); }finally{ DBUtils.closeConn(conn);//資料庫關閉 } return stus ; }
第三步:關閉資料庫連結,釋放資源(注意關閉和開啟的順序相反)
public static void closeConn(Connection conn) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (null != conn) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}