如何在java

时间:2016-07-12 12:58:59

标签: java

我正在尝试在java中创建登录代码,但我的代码中存在一些问题。 如果我输入正确的数据或错误的数据仍然无法进入循环 转到下一帧。 这是完整的代码它已经有异常,所以这不是问题。

Connection conn = null ;
try 
{
    conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/DB?"+
                          "user=name&password=pass&characterEncoding=utf8");

    String query = ("Select User_Name from user where User_Name = '" + txtUserName + "' 
                   and password = '" + passwordField.getPassword().toString() + "' ; ");

    PreparedStatement stmt = conn.prepareStatement(query);
    ResultSet rs = stmt.executeQuery();
    while (rs.wasNull()) {
        System.out.println("true");
        frame2.setVisible(true);
        frame.setVisible(false);
        break;
    }
}
catch (SQLException ee)
{
    JOptionPane.showMessageDialog(frame2, "Wrong inf ... please try again ");
}

我也试过这个但仍然无法正常工作。

Connection conn  = null ;
try 
{
    conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/DB?"+
                        "user=name&password=pass&characterEncoding=utf8");

    PreparedStatement stmt = null;
    String query = "Select User_Name from user where User_Name =? and password=?";
    stmt = conn.prepareStatement(query);
    stmt.setString(1, txtUserName.getText());
    stmt.setString(2, passwordField.getPassword().toString());
    ResultSet rs = stmt.executeQuery();

    while (rs.next()) {
        System.out.println("true");
        frame2.setVisible(true);
        frame.setVisible(false);
        break;
    }                       
}
catch (SQLException ee)
{
    JOptionPane.showMessageDialog(frame2, "Wrong inf ... please try again ");
}

1 个答案:

答案 0 :(得分:0)

我不是一个真正的Java程序员,而是快速浏览一下你的代码和ResultSet :: wasNull()的描述ResultSet :: next()告诉我你误用或误解了它们是如何工作的。

  1. wasNull()告诉您当前列是否包含null。空集 null!
  2. next()将光标向前移动一行,如果 new 当前行有效,则返回true。否则就错了。换句话说,如果您有零个或一个有效行,则next()将立即返回false。
  3. 所以,让我们把事情放在一起。

    案例1:使用wasNull():

    • 输入有效数据。 ResultSet包含非null结果。 wasNull()返回false,不要输入while循环。
    • 输入无效数据。 ResultSet包含空集结果。 wasNull()返回false,不要输入while循环。

    案例2:使用next():

    • 输入有效数据。 ResultSet包含单个非null结果。 next()移动到下一行[无效]并返回false,不要输入while循环。
    • 输入无效数据。 ResultSet包含一个空集结果。 next()移动到下一行[无效]并返回false,不要输入while循环。

    我建议花些时间阅读ResultSet API文档:https://docs.oracle.com/javase/7/docs/api/java/sql/ResultSet.html