[英]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.