2016-03-29 4 views
1

Я создал таблицу с колонкой фактической & Прогнозируемойява столбец SQL вставить

Я вставил массив размера 220 в столбец в таблице с помощью SQL & JAVA

st.execute("insert into host_1 (actual) values ('"+ac[j]+"')"); 

Теперь я пытаюсь вставить прогнозируемое значение

st.executeUpdate("insert into host_1 (exp_predict) values ('"+pre[i]+"')"); 

Он вставлен из 221-й строки. Я хочу, чтобы вставить из row0

Plz кто поможет

+1

Что такое соотношение между '' ac' и pre'? Вы должны либо вставить оба значения в один запрос, либо выполнить запрос на обновление, чтобы заполнить второй столбец. – Berger

+0

i выполнено обновление его обновления из строки 221 –

+0

Имеет ли ваша таблица первичный ключ или ключ, который поможет вам идентифицировать регистр? – lrnzcig

ответ

0

insert оператор всегда создает новую строку. Если вы хотите установить значения для существующих строк, вы должны использовать оператор update. Или, еще лучше, по-прежнему, вставить оба значения одновременно:

// Assume, or check, that ac and pre are the same size: 
int size = ac.length; 

PreparedStatement ps = 
    myConnection.prepareStatement 
    ("INSERT INTO host_1 (actual, exp_predict) VALUES (?, ?)"); 
for (int i = 0; i < size; ++i) { 
    ps.setString(1, ac[i]); 
    ps.setString(2, pre[i]); 
    ps.addBatch(); 
} 
ps.executeBatch(); 
0
"insert into host_1 (actual) values ('"+ac[j]+"')" 

Над вставляет всю строку. Не только столбец.

0

Что нужно сделать, так это сначала вставить фактический столбец, а затем обновить вставленные строки. Ваш первый SQL в порядке, вам нужно только изменить второй.

st.executeUpdate("update host_1 set exp_predict = pre[i] where actual = ac[j]"); 
0

Вы должны обновить host_1 с exp_predict в том же цикле с условием, как как

for(int i = 0; i<221; i++){ 
st.execute("insert into host_1 (actual) values ('"+ac[j]+"')"); 

st.executeUpdate("update host_1 set exp_predict = '"+pre[i]+"' where 
actual = '"+ac[j]+"' 
} 
Смежные вопросы