gpt4 book ai didi

sql - 如何传递参数进行查询?

转载 作者:行者123 更新时间:2023-12-02 03:42:42 28 4
gpt4 key购买 nike

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

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

因为WHERE子句和ORDER BY子句是动态的供用户选择。

使用 $P{} 不起作用。

最佳答案

JasperReports 中有两种用于参数引用的语法表达式:$P{} $P!{}

  • $P{paramName} 语法主要用于设置WHERE输入参数值。替换算法很“聪明”,它的实现使用 java.sql.PreparedStatement :对于 java.lang.String 参数,引擎会将 $P{parameterName} 替换为带引号的值,对于java.lang.Integer - 带有数值等。

示例:

| Parameter name |  Parameter type   | Parameter value ||:---------------|-------------------|:---------------:||   eventName    | java.lang.String  |  Olympic Games  ||   eventType    | java.lang.Integer |       2         |

Original expression (to replace):

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!{paramName} 语法主要用于进行“简单”替换。

示例:

| 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       |

Original expression (to replace):

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
<小时/>

有关更多信息,您可以阅读此 Using report parameters发帖看看这个 Query sample

<小时/>

在你的情况下,正确的表达可能是这样的:

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 参数

关于sql - 如何传递参数进行查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11871042/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com