0

列番号から文字列を取得したい。4データベースからユーザー権限を確認します。

rs.getString(index)4列目からデータを取得するために使用できますか?ユーザーの権限を確認したいので、列データが4の場合、ページはAdminControlPanel.jspにリダイレクトされますが、このコードは機能しません:(

String user=request.getParameter("login");
String pass=request.getParameter("password");
 Class.forName("com.mysql.jdbc.Driver").newInstance();
    Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/android","root","root");  
           Statement st=con.createStatement();
           ResultSet rs=st.executeQuery("select * from users where login='"+user+"' and password='"+pass+"'");
           String p = rs.getString(4);                   
           int count=0;
           while(rs.next()){
           count++;
          }
      if(count>0 && p == "4"){
             // out.println(rs);
                           response.sendRedirect("AdminControlPanel.jsp");
                      }
          else{
               out.println("aaa");
               response.sendRedirect("#");
           }
        }
                 catch(Exception e){
    System.out.println(e);
}
4

3 に答える 3

0

あなたが欲しい

while (rs.next()) {
   String val = rs.getString(4);
   ....

反復処理は行ResultSetを反復処理することに注意してください。各行の列のインデックスは「1」から始まります。

ただし、SQLクエリでは列も返される順序も指定されていないため、列名で取得する方が安全です。

String val = rs.getString("COLUMN_NAME");

以下から、整数が必要であることがわかります。詳細については、 ResultSetのドキュメントを確認してください。ただし、次のとおりです。

int val = rs.getInt("COLUMN_NAME");

余談ですが、上記で//を閉じているのはわかりませResultSetん。そうでない場合は、そうする必要があります!StatementConnection

于 2012-11-19T10:18:46.193 に答える
0
String p = rs.getString(4);   // This should be inside your while                  
int count=0;
while(rs.next()){
    count++;
}
  • while最初の行をループ内に移動する必要があります。を使用してカーソルをその行に移動するまで、行の列をフェッチすることはできませんres.next()

  • また、データベースには理想的にはとoneの組み合わせのレコードのみが含まれている必要があるためです。したがって、の代わりに使用する方が適切 です。usernamepasswordifwhile

  • そして、あなたは本当にcountそこに変数を必要としません。

したがって、コードは次のようになります。-

ResultSet rs=st.executeQuery("select * from users where login='"+user+"' " +
                              "and password='"+pass+"'");
if (rs.next()) {
    String p = rs.getString(4);  // Note that using Column name is a better idea

    // or rs.getInt(4) if the column type is `int`

    if(p.equals("4")) {   // Use equals method to compare string content
         response.sendRedirect("AdminControlPanel.jsp");

    } else{
         out.println("aaa");
         response.sendRedirect("#");
    }
}

また、メソッドを使用して文字列を比較する必要があることに注意してくださいequalsif (p == "4")誤った結果になります。==演算子は文字列の内容を比較するのではなく、比較に使用される参照の内容を比較します。

于 2012-11-19T10:20:55.363 に答える
0

文字列の値をチェックするのではなく、2つの文字列オブジェクトを比較しています。

コードをp.equals( "4")に変更して、試してみてください。

于 2012-11-19T10:40:31.690 に答える