我无法编写正确的sql查询

bkhjykvo  于 2021-07-12  发布在  Java
关注(0)|答案(1)|浏览(254)

我已经用java创建了一个sql登录系统,但是我想知道什么只允许帐户类型为1的人访问这个程序。我写的查询总是出现错误。课程的安全性不是一个问题,因为它只是针对课程作业

public void login(){
        try{
            int a = 0;
            int b =1;

            String query ="select * from Users where Login = '"+ 
main_menu.login_text.getText()+"' and Password='" 
+main_menu.passwordtext.getText().toString()+"' and Account Type='" +1+ 
"'" ;
            rs =st.executeQuery(query);
            System.out.println("Records from Database");
            if(rs.next()){
                f=2;

                query ="select * from Users where Login = '"+ 
main_menu.login_text.getText()+"' and Password='" 
+main_menu.passwordtext.getText().toString()+"' and Account Type='" +0+ 
"'" ;
                rs =st.executeQuery(query);
                System.out.println("Records from Database");
                }

            else if (rs.next()){
                f=1;
            }
            else{

                JOptionPane.showMessageDialog(null, "Incorrect Username 
and Password...");
            con.close();}

        } catch(Exception ex){
            System.out.println("Error"+ex);
        }
deikduxw

deikduxw1#

正如@luk2302所建议的,您应该更改代码。有了这个密码,你就可以轻易地破坏你的安全。
下面是一个如何改进的示例:

PreparedStatement pst = null;
String sql = "SELECT * FROM login where username=? and password=?";
pst = con.prepareStatement(sql);
pst.setString(1,user);
pst.setString(2,pass);
ResultSet rs = pst.executeQuery();

现在,您只需获取刚刚恢复的数据即可获取有关用户的信息。如果没有给出结果集,登录将失败。

相关问题