我选的题目是人事管理系统
刚开始系统有个默认的管理员(自己设定),然后管理员将员工信息录入数据库,员工信息(员工表)有一个权限的字段,拥有权限的人也可以以管理员的身份登录
思路不难,就是,从数据库里取出账号,密码,还有权限三个字段,将他们分别存放在三个列表里,然后先匹配账号和密码然后验证权限:
好了,上代码:
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; }