我试图从同一条件返回的多行返回所有结果:
public static String getResult(String mycondition)
{
ResultSet rsData = sql.RunSelect("select col1 from my_table where con ='"+myCondition+"'");
if (rsData.next())
{
String result = rsData,getString("col1");
}
}
请注意,有一个id列使这些行可以区分。 jsp页面中的显示应该为返回的每一行创建文本字段。 有什么想法吗?
答案 0 :(得分:3)
您可以返回List<String>
或使用字符来分隔单个String
中的多个字符串。 IMO最好返回List<String>
:
public static List<String> getResult(String mycondition) {
List<String> results = new ArrayList<String>();
ResultSet rsData = sql.RunSelect("select col1 from my_table where con='"
+myCondition+"'");
while (rsData.next()) {
results.add(rsData.getString("col1"));
}
return results;
}
此外,此方法易于SQL Injection。请注意,您的参数应该与查询分开发送。您可以改进sql.RunSelect
方法以使用PreparedStatement
代替Statement
。这是代码框架的基本示例:
public ResultSet runSelect(String query, Object ... params) {
//assumes you already have your Connection
PreparedStatement pstmt = con.prepareStatement(query);
int i = 1;
for(Object param : params) {
pstmt.setObject(i++, param);
}
return pstmt.executeQuery();
}
现在您可以将方法修改为
public static List<String> getResult(String mycondition) {
List<String> results = new ArrayList<String>();
//using the new runSelect method
ResultSet rsData = sql.runSelect(
"select col1 from my_table where con=?", mycondition);
while (rsData.next()) {
results.add(rsData.getString("col1"));
}
return results;
}
答案 1 :(得分:0)
你应该使用while循环而不是if循环
而不是 - if(rsData.next())
use - while(rsData.next())
虽然@Luiggi门多萨的回答最好,如果你想要代码中的安全性