无法解决“java.sql.SQLException:[Microsoft] [ODBC SQL Server驱动程序]无效的描述符索引”错误

时间:2013-04-21 22:37:20

标签: java sql-server jsp jdbc

这是尝试从表中获取密码的jsp代码

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con=DriverManager.getConnection("jdbc:odbc:dsn2");

String U=(String)session.getAttribute("uname");
String query="select pwd from img_pwd where uname='"+U+"'";

Statement s=con.createStatement();
ResultSet r= s.executeQuery(query);
String pas="";
 if(r.next())
        {
             pas=r.getString(2);
        }

con.close();

并且数据库中的表“img_pwd”就是这样 -

  1. (UNAME,NVARCHAR(50)
  2. (PWD,NVARCHAR(20))
  3. 因此,如问题标题中所述,我收到错误 - java.sql.SQLException:[Microsoft] [ODBC SQL Server驱动程序]无效的描述符索引

    注意:我已经知道我的结果集代码存在问题,但我无法弄明白。

    任何人都可以指导我吗??? 感谢。

1 个答案:

答案 0 :(得分:2)

您的SQL正在选择一个字段:

String query="select pwd from img_pwd where uname='"+U+"'";

但是这一行正在寻找#2领域(你只选择一个)。

pas=r.getString(2);

将其更改为此,而不是:

pas=r.getString(1);

供参考,这里是Java doc on the ResultSet interface's getString method

  

以Java编程语言中String的形式检索此ResultSet对象的当前行中指定列的值。   参数:   columnIndex - 第一列是1,第二列是2,...