gpt4 book ai didi

java - 带有空参数的准备语句

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:47:43 25 4
gpt4 key购买 nike

我正在开发一个小数据库程序,可以轻松进行选择查询。

该程序使用 GUI,您可以在其中输入搜索参数。如果您没有输入所有参数,它们将由查询结果完成。所以我尝试检查文本框中的参数是否为空/空并将占位符设置为“*”。

但是当我试图跑的时候。即使使用编程的占位符,它也会给我一个 SQLException 语法错误。

我将发布整个代码的精简版,技术上是一样的。

PreparedStatement Statement = connection.prepareStatement("select * From t_person where user_a = ? "+ "AND where dasatz_a = ? " + "AND where user_g = ? ");

if (Parameter.get(0) == null) {
Parameter.set(0, "*") };

Statement.setString(1, Parameter.get(0));

等等。

参数是一个 ArrayList,其中包含来自文本框的参数。

最佳答案

如果没有为“已过滤”列指定参数,则不要以任何方式过滤该列。动态准备您的查询以仅包含指定的参数。

Map<Integer, String> statementParams = new HashMap<>();
String query = "select * From t_person";
boolean firstCondition = true;

if (Parameter.get(0) != null) {
if (firstCondition) {
query += " where ";
firstCondition = false;
} else {
query += " and ";
}
query += "user_a = ?";
statementParams.put(1, Parameter.get(0));
}
// other params
PreparedStatement Statement = connection.prepareStatement(query);

for (MapEntry<Integer, String> entry : statementParams.entrySet()) {
Statement.setString(entry.getKey(), entry.getValue());
}

关于java - 带有空参数的准备语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24364081/

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