gpt4 book ai didi

java - 使用 "StringUtils.join(array, "' ,'") 进行选择;"

转载 作者:行者123 更新时间:2023-11-29 09:05:06 25 4
gpt4 key购买 nike

我必须在数据库上执行查询,因为传递的值之一是一个数组,所以我使用了StringUtils.join(array, "','") 这是我的实现方式,此代码是网络服务服务器端的一部分

 public String medico(int age, String sexstr, String etniastr, String[] sintom)  {

String tes=StringUtils.join(sintom, "','");
String ris = "no";
String q;
String errore = connetti();
try {
if (errore.equals("")) {
Statement st = conn.createStatement();
//ESECUZIONE QUERY

q = "SELECT DISTINCT nome FROM malattia WHERE eta='" + age + "' AND sesso='" + sexstr + "' AND etnia='" + etniastr + "' AND sintomi IN('tes')";

ResultSet rs = st.executeQuery(q);
if (!rs.last()) {
ris = "no";
} else {
ris = "si";
}
} else {
ris = errore;
}
conn.close();
} catch (Exception e) {
ris = e.toString();
}
return ris;
}

我传递tes的方式似乎是问题,当我按照编写的方式传递它时,当我将其更改为:

时,它会给我一个错误500(内部服务器错误)
         ..... sintomi IN('"+tes+"')";

即使数据库中存在相应的数据,它也给我零行

解决此问题的正确方法是什么?提前致谢。

最佳答案

private String MEDICO_SQL = "SELECT DISTINCT nome FROM malattia WHERE eta=? AND sesso=? AND etnia=? AND sintomi IN (%s)";
public String medico(int age, String sexstr, String etniastr, String[] sintom) {
try {
String sql = String.format(MEDICO_SQL, StringUtils.repeat("?", ",", sintom.length));

PreparedStatement st = conn.prepareStatement(sql);
st.setInteger(1, age);
st.setString(2, sexstr);
st.setString(3, etniastr);
for (int i=0; i<sintom.length; i++) {
st.setString(3+i, sintom[i]);
}
ResultSet rs = s.executeQuery();
... process results ...
} catch (....) {
... handle exceptions ...
}
}

我假设您使用的 StringUtils 是 Apache Commons。

关于java - 使用 "StringUtils.join(array, "' ,'") 进行选择;",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7250874/

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