2016-03-15 2 views
1

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

В настоящее время я вставляю записи для размера списка 10, теперь, если я получаю список размером 5, то?

public void setValues(PreparedStatement ps, int ean) throws SQLException { 

    ps.setLong(1,Id); 

ответ

0

Вы можете итерацию (включая методы Java 8 потоков) по списку:

List<String> columnsList = mpGeometryBeanList.get(mpGeometryBeanIndex); 
for(int i = 0; i < columnsList.size(); i++){ 
    ps.setString(i + 2, columnsList.get(i)); 
} 

Или вы, вероятно, может изменить свое подготовленное заявление, чтобы принять значение списка (необходимо увидеть больше кода)

+0

Мой запрос значения INSERT INTO ATTACHMENT_LAYER_INFO "(,,,,,,,,,,???????), Так как запрос может быть создан динамически в зависимости от размера – tarun

0

Используйте цикл for.

ps.setLong(1,attachmetId); 
for(int i=0; i<mpGeometryBeanList.get(mpGeometryBeanIndex).getColumnList().size(): i++){ 
    ps.setString(i+2,mpGeometryBeanList.get(mpGeometryBeanIndex).getColumnList().get(i)); 
} 
+0

Мои запрос имеет значение INSERT INTO ATTACHMENT_LAYER_INFO (?,?,?,?,?,?,?,?,?,?,?) "; так как запрос может быть создан динамически в зависимости от размера. – tarun

+0

Используйте StringBuilder для добавления числа '?' вы хотите. То есть, если ваш список имеет размер n, тогда добавьте n число '?' в запрос, запустив цикл. –

Смежные вопросы