Вы можете вернуть List<String>
или использовать символ для разделения нескольких строк в одном String
. ИМО было бы лучше, возвращая 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;
}
[xkcd.com/327/](http://xkcd.com/327/) – jlordo
@jlordo Я знаю эту шутку (и прочитал ее, когда Мне скучно) извините, просто обновил ответ. Кстати, я просто уважал текущий код OP. –
+1 для лучшего решения – jlordo