Преобразование строки [] в строку через запятую. - PullRequest
1 голос
/ 12 января 2011

У меня есть строковый массив, который мне нужен, чтобы разобрать его в длинную переменную.

Массив строк содержит значения как ["9", "8"] и т. Д. Я хочу преобразовать это в "(9, 8) "(я использую его в предложении" IN "инструкции SQL).

Какой хороший способ сделать это?

Вот мой код:

String[] statusIdArray;
long statsId = Long.parseLong("(");
statsId = Long.parseLong(statusIdArray[0]);
  for(int i=1; i < len; i++) {
    statsId = Long.parseLong(statsId + ",") statsId=Long.parseLong(statsId + statusIdArray[i]);
    statsId = Long.parseLong(statsId + ")");
  }

Но я получаю NumberFormatException at input string "(9"

Ответы [ 4 ]

1 голос
/ 12 января 2011

Предполагается, что вопрос заключается в следующем: у меня есть массив строк, которые я хочу преобразовать в нотацию SQL, чтобы я мог использовать их в запросе SQL:

<code>import java.util.Arrays; // may need to add this import somewhere among your import statements

/**
 * Convert Java String[] to SQL array with varargs syntax.
 * Example method invocations:<blockquote><pre>
 * String sql1 = toSQLArray("1","2","3"); // should return "(1,2,3)"
 * String sql2 = toSQLArray(new String[] { "0", "5" }); // should return "(0,5)"
 * 
* @param array string array. * @return String, созданный путем объединения каждого элемента массива с использованием "," в качестве разделителя и * добавив "(" и ")" в качестве разделителей для результата. * / public String toSQLArray (String ... array) { StringBuilder sb = new StringBuilder (Arrays.toString (array)); sb.replace (0,1, "("); int l = sb.length (); sb.replace (l-1, l, ")"); return sb.toString (); }
0 голосов
/ 12 января 2011
// digits is your array
String result = "IN (";
for (int i = 0; i < digits.length; i++) {
    result += digits[i] + (i != digits.lenght - 1) ? ", " : "";
}

result += ")";

Мне кажется, я понял это прямо сейчас.

Вы должны быть осторожны с содержимым массива, вы можете стать жертвой атаки SQL-инъекций.

0 голосов
/ 12 января 2011

Вопрос немного неясен, но, возможно,

long[] result = new long[ strings.length ];
for (int i=0; i<result.length; i++){
    result[i] = Long.parseLong( strings[i] );
}

У меня есть строковый массив, который состоит из примера digits.say (9 8), я должен передать этот строковый массив как длинную переменную в предложение IN в sql.it должно быть похоже на (9,8), когда долго прошло

В этом случае используйте Jakarta Commons StringUtils (или что-то еще с методом соединения)

sql.append("IN (");
sql.append(StringUtils.join(strings, ','));
sql.append(")");

Обычно я также полностью против прямой интерполяции переменных в SQL (вы должны использовать переменные связывания), но это немного сложно со списком IN переменной длины. Просто убедитесь, что вы не получите странные данные в этом массиве String.

0 голосов
/ 12 января 2011

Что вы называете "синтаксическим анализом этого массива строк до (9,8)?"

У вас есть массив строк?Или только одна строка?Вы хотите, чтобы каждая цифра (разделенная запятой) вводилась в массив Long?Или вы хотели бы (9,8) стать длинным «98»?

...