2

これは、テーブルからパスワードを取得しようとする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))

したがって、質問のタイトルで説明されているように、エラーが発生します- java.sql.SQLException: [Microsoft][ODBC SQL Server Driver]Invalid Descriptor Index

注:結果セットのコードに問題があることを知りましたが、それを理解できません。

誰でも私を案内できますか??? ありがとう。

4

1 に答える 1

3

あなたのSQLは1つのフィールドを選択しています:

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

しかし、この行はフィールド #2 を探しています (そして、1 つだけを選択しています)。

pas=r.getString(2);

代わりに、これを次のように変更します。

pas=r.getString(1);

参考までに、ResultSet インターフェイスの getString メソッドに関する Java ドキュメントを次に示します

この ResultSet オブジェクトの現在の行にある指定された列の値を、Java プログラミング言語の String として取得します。パラメータ: columnIndex - 最初の列は 1、2 番目の列は 2、...

于 2013-04-21T22:46:28.090 に答える