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」には警告があります: The value of the local variable rs is not used

この問題を解決するには?

または、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 に答える