web-dev-qa-db-ja.com

クエリにパラメーターを渡す方法は?

アプリケーションのクエリを作成しようとしていますが、いくつか問題があります。次のように、データベースの1つのフィールドをパラメーターとして渡す必要があります。

SELECT name, phone, email 
FROM company 
WHERE $P{clause} = $P{key}
ORDER BY $P{order}

WHERE句とORDER BY句は、ユーザーが動的に選択できるためです。

$P{}を使用しても機能しませんでした。

14
Ricardo Abbari

JasperReportsのパラメーター参照には2つの構文式があります:$P{}および$P!{}

  • $ P {paramName}構文は、設定[〜#〜] [〜#〜]入力パラメータ値。置換アルゴリズムは「スマート」であり、その実装は Java.sql.PreparedStatement を使用しますJava.lang.Stringパラメータエンジンが置き換える$ P {parameterName}Java.lang.Integerの引用符付きの値-数値など.

標本、見本:

 |パラメータ名|パラメータタイプ|パラメータ値| 
 |:------------ ------------------- |:--- ------------:| 
 | eventName | Java.lang.String |オリンピック| 
 | eventType | Java.lang.Integer | 2 | 

元の式(置き換える):

SELECT startDate, endDate, rating FROM events WHERE name=$P{eventName} AND type=$P{eventType} 

結果は次のようになります。

SELECT startDate, endDate, rating FROM events WHERE name='Olympic Games' AND type=2 

標本、見本:

 |パラメータ名|パラメータタイプ|パラメータ値| 
 |:--------------- | ------------------:|:--- ------------:| 
 | tableName | Java.lang.String |イベント| 
 | eventName | Java.lang.String |オリンピック| 
 |チャンネル| Java.lang.String | 'BBC' | 
 |タイプ| Java.lang.String |スポーツ| 

元の式(置き換える):

SELECT startDate, endDate, rating FROM $P!{tableName} WHERE name='$P!{eventName}' AND channel=$P!{channel} AND type=$P!{type} 

結果は次のようになります。

SELECT startDate, endDate, rating FROM events WHERE name='Olympic Games' AND channel='BBC' AND type=sport

詳細については、これを読むことができます---(レポートパラメーターの使用 投稿して、これを見てください クエリサンプル


あなたの場合、正しい表現は次のようになります:

SELECT name, phone, email FROM company WHERE $P!{clause} = $P{key} ORDER BY $P!{order}

ここで$ P {key}Java.lang.Stringパラメータ

またはこれのように($ P!{clause}の値に依存します)

SELECT name, phone, email FROM company WHERE $P!{clause} = $P!{key} ORDER BY $P!{order}

ここで$ P {key}Java.lang.Stringパラメータ

26
Alex K