猿问

如何传递参数来查询?

如何传递参数来查询?

我试图为我的应用程序编写一个查询,但我遇到了一些问题。我需要将数据库中的一个字段作为参数传递,例如:

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

因为WHERE子句和ORDERBY子句是动态的,用户可以选择。

使用$P{}没用的。


至尊宝的传说
浏览 568回答 2
2回答

qq_花开花谢_0

中有两个用于参数引用的语法表达式。JasperReports: $P{}和$P!{}.$P{parame}语法主要用于设置哪里输入参数值。替换算法是“智能”的,它的实现使用java.sql.PreparedStatement*为java.lang.String参数,引擎将替换$P{参数名}有报价,java.lang.Integer-数值等等。样本:| Parameter name |  Parameter type   | Parameter value | |:---------------|-------------------|:---------------:| |   eventName    | java.lang.String  |  Olympic Games  | |   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$P!{parame}语法主要用于做“简单”替换。样本:| Parameter name |  Parameter type   | Parameter value | |:---------------|------------------:|:---------------:| |   tableName    | java.lang.String  |     events      | |   eventName    | java.lang.String  |  Olympic Games  | |   channel      | java.lang.String  |     'BBC'       | |   type         | java.lang.String  |     sport       |原文(取代):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!{子句}价值)SELECT name, phone, email FROM company WHERE $P!{clause} = $P!{key} ORDER BY $P!{order}哪里$P{KEY}是java.lang.String参数

海绵宝宝撒

如果需要按参数排序,请尝试如下:SELECT name, phone, email ,(case when $P{order} = 'name' then name when $P{order} = 'phone' then phone else email end) as orderlistFROM company  WHERE $P{clause} = $P{key}ORDER BY orderlist
随时随地看视频慕课网APP

相关分类

MySQL
我要回答