zoukankan      html  css  js  c++  java
  • 数据库课程设计 人事管理系统

        一、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)Javajdk1.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:学习资料JAVAcalculator

  • 相关阅读:
    WPF 文本滚动效果 渐变效果
    Unity3D 学习——入门资料整理
    命名管道 问题:信号灯超时问题
    Nginx 遇到的问题
    Nginx的安装配置 例子
    03 Spring的父子容器
    02 浅析Spring的AOP(面向切面编程)
    03 JVM的垃圾回收机制
    02 Java类的加载机制
    01 深入理解JVM的内存区域
  • 原文地址:https://www.cnblogs.com/Mr-BING/p/9245691.html
Copyright © 2011-2022 走看看