gpt4 book ai didi

java - Java上的PreparedStatement以及设置参数的概率

转载 作者:行者123 更新时间:2023-11-29 14:33:33 30 4
gpt4 key购买 nike

有一个在java中使用准备好的语句的好方法,其中有可能有可能设置或不设置某些参数?

假设我有一个像这样的完整查询:

SELECT * FROM Table1 WHERE Field1='....' AND Field2='....' AND Field3='....'

然后在我的程序中我想做类似的事情(我知道我写的方式是不可能的)

// part of code where I have 3 variable set by some logic and the query itself
//.........

String Query = "SELECT * FROM Table1 WHERE Field1=? ";
PreparedStatement s = conn.prepareStatement();
s.setString(1, Field1Var);

if (Field2Var != Value)
{
Query += " AND Field2=? ";
s.setString(2, Field2Var);
}

if (Field3Var != Value3)
{
Query += " AND Field3=? ";
s.setString(3, Field3Var);
}
s = conn.prepareStatement(query);

如何在不编写许多不同查询的情况下实现它?

最佳答案

String query = "SELECT * FROM Table1 WHERE 1=1";

if (Field1Var != Value1) {
query += " AND Field1 = ? ";
}

if (Field2Var != Value2) {
query += " AND Field2 = ? ";
}

if (Field3Var != Value3) {
query += " AND Field3 = ? ";
}

PreparedStatement s = conn.prepareStatement(query);

int i = 0;

if (Field1Var != Value1) {
s.setString(++i, Field1Var);
}

if (Field2Var != Value2) {
s.setString(++i, Field2Var);
}

if (Field3Var != Value3) {
s.setString(++i, Field3Var);
}
  1. 使用附加条件 1=1。
  2. 使用计数器变量。

或者你可以像我一样写一个“NamedPreparedStatement”。 (https://gist.github.com/1978317)

关于java - Java上的PreparedStatement以及设置参数的概率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9558952/

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