指数2超出范围

0 java jdbc

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)

kos*_*osa 8

Select Username from .....................
Run Code Online (Sandbox Code Playgroud)

select子句中只有一列.

把它改成类似的东西

  Select Username, yourpasswordcolumnname from......
Run Code Online (Sandbox Code Playgroud)


jse*_*ano 7

您只从表中检索一列:

"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)

然后你的代码应该工作,在另一个相关的注释,永远不要将密码存储为"明文",总是使用单向加密方法,并使用盐!

相关:您可能错误地存储密码