为了账号安全,请及时绑定邮箱和手机立即绑定

如何传递参数来查询?

如何传递参数来查询?

至尊宝的传说 2019-07-09 15:35:56
如何传递参数来查询?我试图为我的应用程序编写一个查询,但我遇到了一些问题。我需要将数据库中的一个字段作为参数传递,例如:SELECT name, phone, email  FROM company  WHERE $P{clause} = $P{key}ORDER BY $P{order}因为WHERE子句和ORDERBY子句是动态的,用户可以选择。使用$P{}没用的。
查看完整描述

2 回答

?
qq_花开花谢_0

TA贡献1835条经验 获得超7个赞

中有两个用于参数引用的语法表达式。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参数


查看完整回答
反对 回复 2019-07-09
?
海绵宝宝撒

TA贡献1809条经验 获得超8个赞

如果需要按参数排序,请尝试如下:

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


查看完整回答
反对 回复 2019-07-09
  • 2 回答
  • 0 关注
  • 567 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信