私は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バインディングに問題があることをどこかで読んだことがありますが、これは何らかの形で関連している可能性がありますか?