1

私はOracleデータベース11gリリース2で作業しており、JDK 8とTomcat 8.0.30でapache commons dbutils v1.6を使用しています。QueryRunner とそのメソッドを使用しているので、このようにテキストで変数を連結するだけですべてが正常に機能します

query.query ("select * from table where field = '"+value+"'", rsh);

最近、準備されたステートメントを使用して適切な方法でクエリを実行しようとしましたが、クエリメソッドを使用してパラメーターをバインドするたびに無駄になりました

query.query ("select ESTREC,LOTE,FECREC from prueba.RECAUDO_ENC where NITREC = ? and ESTREC = ? ORDER BY FECREC DESC", rsh, new Object[]{"1234","PG"}); 

明らかな理由もなくこのエラーが発生します

java.sql.SQLException: ORA-00942: table or view does not exist
  Query: select ESTREC,LOTE,FECREC from prueba.RECAUDO_ENC where NITREC = ? and ESTREC = ? ORDER BY FECREC DESC; Parameters: [1234, PG]

テーブルが存在し、ユーザーがテーブルへのアクセス許可を持っていることを 100% 確信しています。また、クエリでパラメーターを連結する同じクエリを実行すると、問題なく実行されるため、この動作の背後にある理由を探しています。メソッドの使用法?また、Oracleでdbutilsを使用したBLOBバインディングに問題があることをどこかで読んだことがありますが、これは何らかの形で関連している可能性がありますか?

4

3 に答える 3

0

あなたと同じエラーが発生しました。

jdbc ドライバのバージョンには注意が必要だと思います。私の場合、適切な jdbc dirver を変更することで問題を解決しました。

jdbc ドライバーを誤用しました。jdbc ドライバーのバージョンが 12 以降だと思います。最初に MANIFEST.MF で jdbc ドライバーのバージョンを確認します。次の行があります

    ....
    Implementation-Version: 11.2.0.4.0
    ....

それ以外の場合は、別のものを用意する必要があります。

幸運を

于 2017-01-02T04:12:01.043 に答える