[英]select statement where condition returns multiple rows
我試圖從相同的where條件返回的多行中獲取所有結果:
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頁面中顯示的內容應為返回的每一行設置文本字段。 有什么想法嗎?
您可以返回List<String>
或使用char將多個字符串分隔為單個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;
}
你應該使用while循環而不是if循環
而不是-if(rsData.next())
使用-while(rsData.next())
如果您希望代碼安全,盡管@Luiggi Mendoza的答案是最好的
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.