人事管理系统登录验证以及多条件查询的实现

我选的题目是人事管理系统

刚开始系统有个默认的管理员(自己设定),然后管理员将员工信息录入数据库,员工信息(员工表)有一个权限的字段,拥有权限的人也可以以管理员的身份登录

思路不难,就是,从数据库里取出账号,密码,还有权限三个字段,将他们分别存放在三个列表里,然后先匹配账号和密码然后验证权限:

好了,上代码:

public Boolean isAdmin() {//判断是不是管理员
        try{
            connection = (Connection)DriverManager.getConnection(url);
        }catch(SQLException e1){
            e1.printStackTrace();
        }
        String sql = "select id,password,authority from worker;";
        
        try {
            Vector<String> userVector = new Vector<String>();
            Vector<String> passwordVector = new Vector<String>();
            Vector<String> authorityVector = new Vector<String>();
            int i=0;
            PreparedStatement ps = (PreparedStatement) connection.prepareStatement(sql);
            ResultSet rs = ps.executeQuery();
            while(rs.next()) {
                userVector.add(rs.getString(1));
                passwordVector.add(rs.getString(2));
                authorityVector.add(rs.getString(3));
            }
            
            for(i = 0;i<userVector.size();i++) {
                if(userVector.get(i).equals(userAt.getText())&&passwordVector.get(i).equals(passwordAt.getText())&&authorityVector.get(i).equals("1")) {
                    return true;//是管理员
                }
            }
        } catch (SQLException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
        return false;//不是管理员
    }

多条件查询的实现

这个功能要点技巧的地方是建立查询的select语句,我刚开始单纯以为是用几个and连起来就ok,事实虽然是如此...但是有个问题

因为我select语句where后面实际上用户输入,例如面板上,有三个条件,name,sex,birthday,如果都填,就是select * from worker where name = name.getText and sex = sex.getText() and birthday = birthday.getText();但是假如不是全部填,那么有个条件为空们就会报语法错误,所以这里重点就是找个好点的办法来建立这个SQL语句,这里我用的笨方法,适用于条件比较少的,就是设一个标志位,定位true,如果不为空,那么后面跟着来的条件就与要加"and",如果是空,那么则不加"and",看代码吧

public String getSQL(String sql) {
        Vector<String> attribute = new Vector<String>();
        attribute.add("name");
        attribute.add("job");
        attribute.add("department");
        attribute.add("state");
        attribute.add("authority");
        Boolean flag = false;
        if(!ID.getText().equals("")) {
            //id唯一,如果id不是空,就不用继续判断,直接返回语句return sql+"id=\""+ID.getText()+"\";";
        }else{
            
            if(!NAME.getText().equals("")) {
                sql = sql + "name=\""+NAME.getText()+"\" ";
            }
            else {
                flag = true;
            }
            
            if(flag&&!JOB.getText().equals("")) {
                sql = sql + "job=\""+JOB.getText()+"\"";
            }else if(flag==false&&!JOB.getText().equals("")) {
                sql = sql + "and "+"job=\""+JOB.getText()+"\"";
            }
            
            if(flag&&!DEPART.getText().equals("")) {
                sql = sql + "department=\""+DEPART.getText()+"\"";
            }else if(flag==false&&!DEPART.getText().equals("")) {
                sql = sql + "and "+"department=\""+DEPART.getText()+"\"";
            }
            
            if(flag&&!STATE.getText().equals("")) {
                sql = sql + "state=\""+STATE.getText()+"\"";
            }else if(flag==false&&!STATE.getText().equals("")) {
                sql = sql + "and "+"state=\""+STATE.getText()+"\"";
            }
            
            if(flag&&!AUTHORITY.getText().equals("")) {
                sql = sql + "authority=\""+AUTHORITY.getText()+"\"";
            }else if(flag==false&&!AUTHORITY.getText().equals("")) {
                sql = sql + "and "+"authority=\""+AUTHORITY.getText()+"\"";
            }
            
            
        }
        return sql;
    }

猜你喜欢

转载自www.cnblogs.com/Yintianhao/p/9191321.html