1. 程式人生 > >數據庫+Java課程設計 人事管理系統 (一)

數據庫+Java課程設計 人事管理系統 (一)

clear 插入 ID spc AR util color job AI

一、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         }

最後提前預覽一波,俺本次課程設計做出最後的作品

技術分享圖片

用戶模式:

技術分享圖片

管理員模式:

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

各位大佬如果有好意見歡迎及時提出,假如沒有及時回復可以郵件[email protected]

數據庫+Java課程設計 人事管理系統 (一)