使用Java登录SQL身份验证

时间:2012-04-14 08:41:29

标签: java

我正在尝试使用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身份验证?

谢谢

2 个答案:

答案 0 :(得分: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){}
  }
}

答案 1 :(得分: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();
  }

} }