一、JAVA與數據庫的合作
此次開發語言為Java,所用的數據庫驅動是mysql-connector-java-5.1.8-bin.jar
第一步 用Java連接MySQL數據庫(驅動下載:https://dev.mysql.com/downloads/connector/j/ )
將下載好的mysql-connector-java-5.1.8-bin.jar復制到本機下載的Java的文件夾中 (作者的是 C:\Program Files (x86)\Java\jdk1.7.0_07)
然后在 Eclipse 中,鼠標選中人事管理系統工程,右鍵點擊 Build Path,選擇 Configure Build Path,會 跳 出 一 個 屬 性 框 圖 。選 擇 Java Build Path 下 的 Libraries , 查 看 是 否 有 mysql-connector-java-5.1.8-bin.jar。
如果沒有,點擊Add External JARs,瀏覽到JDBC的MySQL 驅動的 jar 包,點擊確定,將其導入到項目中。
第二步 在項目下跑一個測試代碼來檢測數據庫是否鏈接成功
1 public class Test() { 2 public static void main(String []args){ 3 try { 4 //mysql數據庫設置驅動程序類型
5 Class.forName("com.mysql.jdbc.Driver"); 6 System.out.println("mysql數據庫驅動加載成功"); 7
8 //sqlserver數據庫設置驅動程序類型 9 //Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); 10 //System.out.println("sqlserver數據庫驅動加載成功");
11
12 } 13 catch(java.lang.ClassNotFoundException e) { 14 e.printStackTrace(); 15 } 16 } 17 }
第三步:驅動鏈接成功后,就可以在數據庫建立待操作的基本表了
人事管理系統主要表為 (員工信息表 和 人事變更表)
對表的基本操作包括 用SQL語句對表中數據進行 查詢和更新(增刪改)
首先創建一個Connection對象 然后用SQL語句對數據庫進行操作 具體代碼如下
package exercise3;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
public class DbProcess{
static Connection connection = null; //鏈接對象 static ResultSet rs=null ; //操作后結果集 //mysql數據庫url static String userMySql="root"; //數據庫用戶名 static String passwordMySql="a123456"; //密碼 static String urlMySql = "jdbc:mysql://localhost:3306/StaffDb?user="+userMySql+"&password="+passwordMySql+"&useUnicode=true&characterEncoding=gbk"; //將數據庫與Java鏈接 public DbProcess() { DbProcess//構造函數 try { //mysql數據庫設置驅動程序類型 Class.forName("com.mysql.jdbc.Driver"); System.out.println("mysql數據庫驅動加載成功"); } catch(java.lang.ClassNotFoundException e) { e.printStackTrace(); } } public static void connect(){ //連接 try{ //mysql數據庫 connection = DriverManager.getConnection(urlMySql); if(connection!=null){ System.out.println("數據庫連接成功"); } } catch(Exception e){ e.printStackTrace(); } } public static void disconnect(){ //斷開連接 try{ if(connection != null){ connection.close(); connection = null; } } catch(Exception e){ e.printStackTrace(); } } public static ResultSet executeQuery(String sql) { //把查詢SQL語句傳送至數據庫並執行 然后返回查詢的結果集 try { System.out.println("executeQuery(). sql = " + sql); PreparedStatement pstm = connection.prepareStatement(sql); //PreparedStatement:用於執行sql語句的對象 //用connection的PreparedStatement(sql)方法獲取 rs = pstm.executeQuery(); // ResultSet rw=rs; //while(rs.next()){ //System.out.println(rs.getString("pNo")); // } } catch(SQLException ex) { ex.printStackTrace(); } return rs; } //插入 //executeUpdate 的返回值是一個整數,指示受影響的行數(即更新計數)。 //executeUpdate用於執行 INSERT、UPDATE 或 DELETE 語句 //以及 SQL DDL(數據定義語言)語句,例如 CREATE TABLE 和 DROP TABLE。 //執行增、刪、改語句的方法 public static int executeUpdate(String sql) { //把更新SQL語句傳送至數據庫執行 int count = 0; connect(); try { Statement stmt = connection.createStatement(); count = stmt.executeUpdate(sql); } catch(SQLException ex) { System.err.println(ex.getMessage()); } disconnect(); return count; } }
例如 查詢所有員工的個人信息
1 try{ 2 // 建立查詢條件 3 String sql = "select * from person;"; 4 System.out.println("queryAllProcess(). sql = " + sql); 5 6 // 將查詢獲得的記錄數據,轉換成適合生成JTable的數據形式 7 DbProcess.connect(); 8 9 DbProcess.executeQuery(sql); //結果集ResultSet 10 11 12 13 // 將查詢獲得的記錄數據,轉換成適合生成JTable的數據形式 14 staffVector.clear(); //此條為UI部分 可不管 15 while(DbProcess.rs.next()){ 16 Vector v = new Vector(); 17 System.out.println(DbProcess.rs.getString("pName")); //測試語句:輸出查詢出來的姓名 18 v.add(DbProcess.rs.getString("pId")); 19 v.add(DbProcess.rs.getString("pName")); 20 v.add(DbProcess.rs.getString("pSex")); 21 v.add(MD5.decrypt(DbProcess.rs.getString("pPasswd"))); 22 //MD5.decrypt()為我的數據庫密碼算法 23 v.add(DbProcess.rs.getString("pAuthority")); 24 v.add(DbProcess.rs.getString("pDepartment")); 25 v.add(DbProcess.rs.getString("pJob")); 26 v.add(DbProcess.rs.getString("pEdulevel")); 27 v.add(DbProcess.rs.getString("pSpcialty")); 28 v.add(DbProcess.rs.getString("pBirthday")); 29 v.add(DbProcess.rs.getString("pAddress")); 30 v.add(DbProcess.rs.getString("pTel")); 31 v.add(DbProcess.rs.getString("pEmail")); 32 v.add(DbProcess.rs.getString("pState")); 33 v.add(DbProcess.rs.getString("pRemark")); 34 35 staffVector.add(v); // 查詢結果集已轉換為Vector v ,並將v添加到我的GUI中顯示 36 } 37 StaffJTable.updateUI(); //此條更新UI,在本次可以不管 38 DbProcess.disconnect(); 39 }catch(SQLException sqle){ 40 System.out.println("sqle = " + sqle); 41 JOptionPane.showMessageDialog(null, 42 "數據操作錯誤","錯誤",JOptionPane.ERROR_MESSAGE); 43 }catch(Exception e){ 44 System.out.println("e = " + e); 45 JOptionPane.showMessageDialog(null, 46 "數據操作錯誤","錯誤",JOptionPane.ERROR_MESSAGE); 47 }
最后提前預覽一波,俺本次課程設計做出最后的作品
用戶模式:
管理員模式:
關於項目源代碼我上傳到Github 上 可以直接下載
https://github.com/MrBling/Database
sql文件是我的數據庫文件 數據庫是我當時課設的項目名 我懶得改了 當然建議用英文 不建議用中文
注:我數據庫項目 因為當時用的是絕對路徑所以想要用的話 需要把數據庫按照我的路徑來存放
把“數據庫”這個文件夾 放到這個路徑下F:\學習資料\JAVA\calculator