Java - выходной массив без его форматирования - PullRequest
0 голосов
/ 29 ноября 2010

Я пишу приложение, которое позволяет пользователю создавать пользовательские запросы SQL с пользовательским вводом.

Я добавляю значение из каждого JTextFields в массив, используя

for(JTextField field : fields){
 if (!field.getText().equals("")){
   rows.add(field.getText());
 }
}

Когда я вывожу массив, он заключен в квадратные скобки

[arVal1, arVal2, etc, etc]

Поэтому, когда я вставляю массив в строку запроса, он выглядит так:

INSERT INTO table ([arval1, arval2, arVal3]) VALUES ([bla, bla, bla])

Когда я по какой-то причине запускаю запрос, я получаю: ORA-00928: отсутствует ошибка ключевого слова SELECT; но если у меня есть строка по умолчанию для запроса, например:

INSERT INTO table (arval1, arval2, arVal3) VALUES (bla, bla, bla)

отлично работает.

Я ищу избавиться от [] при выводе массива

Спасибо

Ответы [ 3 ]

2 голосов
/ 29 ноября 2010

Вы не должны полагаться на toString метод массива.

Используя Гуава , попробуйте Joiner.on(",").join(myArray);

1 голос
/ 29 ноября 2010

Если вы не можете использовать гуаву (но я рекомендую это :))

StringBuilder builder = new StringBuilder();
builder.add("INSERT INTO table (");
for(int i=0; i<rows.length: rows){
   builder.add(row);
   if(i<rows.length -1){
      builder.add(",")
   }
}
builder.add(") VALUES (");
....

Для завершения, с гуавой, это выглядит так:

Joiner commaJoiner = Joiner.on(", ");
"INSERT INTO table (" + commaJoiner.join(rows) + " VALUES " + commaJoiner.join(values)
0 голосов
/ 29 ноября 2010

Возможно, слишком сложное решение, но попробуйте переопределить toString ()

 ArrayList<String> rows = new ArrayList<String>()
    {
        public String toString()
        {
            StringBuffer retVal = new StringBuffer();
            for(int i = 0; i < size(); i++)
            {
                retVal.append(this.get(i));
                if(i < size() - 1)
                {
                    retVal.append(",");
                }
            }
            return retVal.toString();
        }
    };
...