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));
}
Run Code Online (Sandbox Code Playgroud)
没有
+"Password is "+resultSet.getString(2)
Run Code Online (Sandbox Code Playgroud)
它工作正常,它是从数据库打印用户名,但它也会引发错误.
com.microsoft.sqlserver.jdbc.SQLServerException: The index 2 is out of range.
Run Code Online (Sandbox Code Playgroud)
Select Username from .....................
Run Code Online (Sandbox Code Playgroud)
在select子句中只有一列.
把它改成类似的东西
Select Username, yourpasswordcolumnname from......
Run Code Online (Sandbox Code Playgroud)
您只从表中检索一列:
"Select Username from dbo.LoginDetails where Username = ? and Password =?");
Run Code Online (Sandbox Code Playgroud)
试试这个:
"Select Username, Password from dbo.LoginDetails where Username = ? and Password =?");
Run Code Online (Sandbox Code Playgroud)
然后你的代码应该工作,在另一个相关的注释,永远不要将密码存储为"明文",总是使用单向加密方法,并使用盐!
相关:您可能错误地存储密码
| 归档时间: |
|
| 查看次数: |
17446 次 |
| 最近记录: |