0

SQLクエリにこのようなものがあります

private static final String QUERY_PHYSICIAN_INFO= "SELECT * FROM PHYSICIAN_INFO WHERE ? = ?";

しかし、以下は機能していません..

    Connection conn = null;
    PreparedStatement stmt = null;  
     String logintype;
       if(isInteger(id))
       {
           logintype="BADGEID";

       }else{
           logintype="ID";
       }
        stmt=conn.prepareStatement(QUERY_PHYSICIAN_INFO);
        stmt.setString(1, logintype);
        stmt.setString(2, id);
        ResultSet rs = stmt.executeQuery();
        Physician phs = null;

これには特別な理由がありますか?前もって感謝します。

4

2 に答える 2

2

?フィールド名ではなく、パラメータを渡すためのものです。

これを行う必要がある場合は、SQLを次のようにビルドします

"SELECT * FROM PHYSICIAN_INFO WHERE " + "BADGEID" + " = ?"
于 2012-09-03T10:50:56.260 に答える
0

あなたはこのようなことを試すことができますか?パラメータの受け渡しにのみ使用できます。または、データベース関数を使用してから、関数に値を渡すこともできます。

private static final String QUERY_PHYSICIAN_INFO_BADGE= "SELECT * FROM PHYSICIAN_INFO WHERE BADGEID = ?";

private static final String QUERY_PHYSICIAN_INFO_ID= "SELECT * FROM PHYSICIAN_INFO WHERE ID = ?";

Connection conn = null;
    PreparedStatement stmt = null;  
     String logintype;
       if(isInteger(id))
       {               
           stmt=conn.prepareStatement(QUERY_PHYSICIAN_INFO_BADGE);

       }else{               
           stmt=conn.prepareStatement(QUERY_PHYSICIAN_INFO_ID);
       }
        stmt.setString(1, id);
        ResultSet rs = stmt.executeQuery();
        Physician phs = null;
于 2012-09-03T10:57:34.257 に答える