JavaアプリケーションからFirebirdデータベースを照会しようとしています。このクエリには、2つの整数変数と1つの文字列が含まれます。クエリは次のようになります。jdbcファイヤーバード接続のSQLクエリに文字列変数を追加する方法
Statement statement = conn.createStatement();
ResultSet rs = statement.executeQuery("select * from table where
column1 < " + intvariable1 + " and (
column2 > " + intvariable2 +" or column2 = 0) and
column3 = '" + stringvariable + "' ";
Rs.next();
syso(rs.getInt(1));
ResultSet
が空であることが表示されますが、私は、変数の代わりにハードコーディングされた文字列の値を使用するときに私が期待される結果を得ます。
私は同じ結果でpreparedstatements
でこれを試しました。これは文字列変数なしでしか動作しません。
私が間違っていることは何ですか?
EDIT:問題解決済み! StringvariableはBLOBフィールドから来て、その中に空の値がいくつかあります。トリム機能を呼び出すと削除されました。
をあなたは文字列値を中心に、大手やクエリの末尾の空白を持つ – developer
変数を通過したデータの問題のように思えます。準備されたステートメントを使用する方法を学んでください。 –
使用する値と、返される予定のテーブルのデータを表示してください。そして、準備されたステートメントを使用して(正しく使用してください)、値をクエリ文字列に連結しないでください。 –