0

我正在尝试使用 Java 构建登录 UI。但是我的SQL认证有问题

这是代码:

    public void actionPerformed(ActionEvent e){
            if (e.getSource() == Login)

                    try {
                Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
                Connection con=DriverManager.getConnection("jdbc:odbc:MessageStore","sa","12345"); 
                Statement cmd=con.createStatement(); 
                ResultSet rs=cmd.executeQuery("select * from UserList where UserName='"+nameText.getText());
    }

但是有一个带有“rs”的警告:未使用局部变量rs的值

如何解决这个问题呢?

还是有更直接的代码来实现 SQL 身份验证?

谢谢

4

2 回答 2

1

在“未使用变量 X 的值”的大多数情况下,您可以选择忽略该消息或删除对它的赋值。在这些情况下,您对价值不做任何事情。

但是,在这种情况下,您只对数据库执行查询,而不会对结果执行任何操作。因此,您不知道您要验证的用户是否确实是有效用户。

因此,您必须使用变量“rs”来检查是否确实有结果并允许用户登录。

public void actionPerformed(ActionEvent e){
  if (e.getSource() == Login){
    try {
      Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); // may not be needed since JDBC4
      Connection con=DriverManager.getConnection("jdbc:odbc:MessageStore","sa","12345"); 
      PrePareStatement cmd=con.prepareStatement("select * from UserList where username=?"); // safer, protect against 
      cmd.setString(1,nameText.getText());
      ResultSet rs=cmd.executeQuery();
      if( rs.next() ){
        // username does exist, now check the password
      }else{
        // username does not exist
      }
    }catch(Exception e){}
  }
}
于 2012-04-14T12:32:13.363 回答
0

将 ResultSet 设为全局变量。

public void actionPerformed(ActionEvent ae) {
if (ae.getSource() != null) {
String connectionUrl = "jdbc:sqlserver://localhost:1420;" + "databaseName=TestsampleDB1;";
Connection con = null;
Statement stmt = null;
ResultSet rs = null;
try {
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    System.out.println("Driver okay");
    con = (Connection) DriverManager.getConnection("jdbc:odbc:MessageStore", "sa", "12345");
    System.out.println("Connection Made");
    PreparedStatement cmd = con.prepareStatement("select * from UserList where username=?");

    if (rs.next()) {
        // login user exist
    } else {
    // user doesn't exist}
    }
} catch (Exception e) {
    e.printStackTrace();
  }

} }

于 2013-02-21T05:48:32.390 回答