5.1.4 数据库操作类

接下来,我们要创建一个类专门用来执行SQL语句,这里我们命名为类是UserData(意为User数据相关)。
这个类暂时有两个函数,一个函数为userValidate,此函数功能是验证是否能登录,参数是用户名和密码,如果和数据库的匹配,那么可以登录返回true,否则返回false
一个函数是根据角色查询用户findUsersByRole,参数是角色(0是学生、1是老师,9是管理员)。查询结果是一个List。这个类用到了User类。
package data;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
public class UserData{
    /**
    根据用户名和密码验证是否能登录
     */
    public static boolean userValidate(String userName,String psw){
        String pswFromDB="";
        //要执行的sql语句,通过字符串拼接出来
        String SQLTEXT="select password from user where userName = '"+userName+"'";
        try{
            //使用上面的DBConifg类的getCon方法,建立一个连接
            Connection con=DBConfig.getCon();
            //准备执行sql的实体
            Statement stmt=con.createStatement();
            //执行sql,并把查询结果赋给rst
            ResultSet rst=stmt.executeQuery(SQLTEXT);
            while(rst.next()){
                //查询结果,在这里是查询字段为password的值
                pswFromDB=rst.getString("password");
            }
            //安装后使用先关闭原则,关闭各个对象,特别是con如果不关闭,会造成连接泄露
            rst.close();
            stmt.close();
            con.close();
        }
        catch(SQLException e){
            e.printStackTrace();
        }
        if(pswFromDB.equals(psw)){
            //比较数据库查到的密码和参数传进来的密码是否相等
            return true;
        }
        return false;
    }
    /**
     根据角色查找用户
     */
    public static List<UserfindUsersByRole(String role){
        List<Userresult=new ArrayList<User();
        //要执行的sql语句,通过字符串拼接出来
        String SQLTEXT="select * from user where role='"+role+"' limit 10;";
        try{
            //使用上面的DBConifg类的getCon方法,建立一个连接
            Connection con=DBConfig.getCon();
            //准备执行sql的实体
            Statement stmt=con.createStatement();
            //执行sql,并把查询结果赋给rst
            ResultSet rst=stmt.executeQuery(SQLTEXT);
            while(rst.next()){
                //查询结果,在这里是查询字段为password的值
                String username=rst.getString("username");
                String password=rst.getString("password");
                String role1=rst.getString("role");
                String nickname=rst.getString("nickname");
                String createDate=rst.getString("create_date");
                User user=new User();
                user.setUsername(username);
                user.setPassword(password);
                user.setNickname(nickname);
                user.setCreateDate(createDate);
                user.setRole(role1);
                result.add(user);
            }
            //安装后使用先关闭原则,关闭各个对象,特别是con如果不关闭,会造成连接泄露
            rst.close();
            stmt.close();
            con.close();
        }
        catch(SQLException e){
            e.printStackTrace();
        }
        return result;
    }
}

这个类同样复制到data包里,和User以及DBConfig放在一起: