如何根据数据库使列等于

时间:2013-12-29 18:15:14

标签: java jframe

我在IFELSE声明中遇到了这个问题 我该怎么办?我的位置等于数据库ACCESS 。我想要做的是,如果管理员是正确的,他们显示CP和工作人员是正确的,他们显示AS来获取我的数据库的位置。

addStudents AS = new addStudents();
ControlPanel CP = new ControlPanel();

try {
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    Connection con = DriverManager
            .getConnection("jdbc:odbc:slcvJavaEnrollment");
    Statement st = con.createStatement();
    ResultSet rs = st
            .executeQuery("SELECT * FROM loginUsers where Username='"
                    + userTxt.getText() + "' and Password='"
                    + passTxt.getText() + "'");

    if (rs.getString("Position").contentEquals("Admin")) {
        JOptionPane.showMessageDialog(null, "WELCOME ADMIN");
        CP.show();
        dispose();
        con.close();
        st.close();
    } else if (rs.getString("Postion").contentEquals("Staff")) {
        JOptionPane.showMessageDialog(null, "WELCOME STAFF");
        AS.show();
        dispose();
        con.close();
        st.close();
    }
} catch (Exception e) {
    System.out.println(e);
}

1 个答案:

答案 0 :(得分:0)

您错过了while (rs.next())以将结果集移至下一个结果。试试吧。同样正如@Learing指出的那样,你在else if中拼错了“位置”。

while (rs.next()) {
    if (rs.getString("Position").contentEquals("Admin")) {
        JOptionPane.showMessageDialog(null, "WELCOME ADMIN");
        CP.show();
        dispose();
        con.close();
        st.close();
    } else if (rs.getString("Position").contentEquals("Staff")) {
        JOptionPane.showMessageDialog(null, "WELCOME STAFF");
        AS.show();
        dispose();
        con.close();
        st.close();
    }
}

编辑

要防止SQL注入,您应该使用PreparedStatment。

试试这个,而不是你拥有的

PreparedStatment pstmt = conn.prepareStatement("SELECT * from loginUsers WHERE Username=? and Password=?");
pstmt.setString(1, userTxt.getText());
pstmt.setString(2, passTxt.getText());

ResultSet rs = pstmt.executeQuery();