簡體   English   中英

索引2超出范圍

[英]The index 2 is out of range

PreparedStatement preparedStatement = Connectionstring().prepareStatement(
            "Select Username from dbo.LoginDetails where Username = ? and Password =?");
  String User = tf_Fname.getText();
  String _Pass = new String(tf_Lname.getPassword());
        preparedStatement.setString(1, User);
        preparedStatement.setString(2, _Pass);
        ResultSet resultSet = preparedStatement.executeQuery();
        while (resultSet.next()) 
        {
            System.out.println("Username is "+ resultSet.getString(1)+"Password is "+resultSet.getString(2));  
        }

不帶

+"Password is "+resultSet.getString(2)

它工作正常,正在從數據庫中打印用戶名,但同時也會引發錯誤。

com.microsoft.sqlserver.jdbc.SQLServerException: The index 2 is out of range.
Select Username from .....................

select子句中只有一列。

將其更改為類似

  Select Username, yourpasswordcolumnname from......

您僅從表中檢索一列:

"Select Username from dbo.LoginDetails where Username = ? and Password =?");

嘗試這個:

 "Select Username, Password from dbo.LoginDetails where Username = ? and Password =?");

然后,您的代碼應該工作,另外一個相關的注意事項是,切勿將密碼存儲為“明文”,始終使用一種單向加密方法,並使用鹽!

相關: 您存儲的密碼可能不正確

select * from dbo.LoginDetails where Username = ? and Password =?

會為您提供所需的信息,以便您從dbo.LoginDetails中選擇所有列,而不是像現在一樣僅選擇一列Username

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM