2013-03-13 8 views
7

JDBC SQL文をPHPでODBC/DB2に変換しようとしています。私は私を混乱させる次の条項に出くわしました。なぜJDBCコードに二重疑問符があるのですか

WHERE phid = ??id 

私の最初の本能は、それが準備文であることでしたが、今はそれほど確信していません。これはJSP/JDBCのものですか? Google /スタックは何も表示されていません。

+3

あなたがこれを発見したコードブロックを投稿することができますか? –

+1

これは標準JDBCではなく、ベンダー固有の拡張である可能性があります。 –

+1

または、アプリケーション固有の(名前付きの)パラメータ処理があります。 –

答えて

0

他の人がコメントしました(申し訳ありませんが、コメントするのに十分な担当者がいない)ので、これはおそらく名前付きのパラメータ処理のいくつかの方法です。私はそれがJDBCやORMフレームワークでもわかりませんので、その特定のアプリケーション用に作成されたカスタムJDBC/ORMフレームワークかもしれません。いくつかのサンプルコードを見ることは確かに役に立ちます。

1

Whoa! Mabyeは通常のバインド変数ですが、2行連続しています!ドキュメントにはjava.sql.Conneciton(クイックリード)という空白で区切られていなければならないものは何もありません。バインド変数を追加するためにsetString呼び出しがあるかどうかを確認できるように、コードを投稿してください。例えば

、このような何か:私はこのようなものを見たことがありませんが、多分これは彼らが何をやっていたさ

pstmt = conn.prepareStatement("select blah from blah WHERE phid = ??id and blah blah"); 
pstmt.setString(1, "customer_"); 
pstmt.setString(2, "order_"); 

編集:試しました!そしてそれは私にエラーを与えた!デッドコードが見つかったのだろうか?これは私が試したものです:

sql.append("SELECT A.ID, A.GROUP_NUMBER, A.GROUP_NAME "); 
    sql.append("FROM " + tab1 + " A "); 
    sql.append("INNER JOIN " + tab2 + " B "); 
    sql.append("ON (A.ID = B.GROUP_ID) "); 
    sql.append("WHERE B.THREAD_ID = ? "); 
    sql.append("AND B.THREAD_ID = ??ID "); 
    sql.append("ORDER BY A.ID "); 

// ... 

     conn = getConn(); 
     pstmt = conn.prepareStatement(sql.toString()); 
     pstmt.setInt(1, threadId); 
     pstmt.setString(2, "B."); 
     pstmt.setString(3, "THREAD_"); 

私はこのエラーを得た:

ILLEGAL SYMBOL "?". SOME SYMBOLS THAT MIGHT BE LEGAL ARE: MICROSECONDS MICROSECOND SECONDS SECOND MINUTES MINUTE HOURS. SQLCODE=-104, SQLSTATE=42601, DRIVER=3.57.82

関連する問題