2015-06-11 3 views
0

У меня проблема с вставкой данных в таблицу mysql. JDBC не вставляет данные в таблицу mysql. JDBC должен получить значение от входа "liczbaUzytkownikow" и «данные из формы таблицы, которая содержит информацию о "Termin". (Именно: termin.nazwaObiektu, termin.adresObiektu, termin.dzien, termin.odKtorej и termin.doKtorej)JDBC не вставляет данные в таблицу mysql

Вот код этого JDBC:.

conn = ConnectionClass.Polacz(); 
ArrayList<Rezerwacja> rezerwacje = new ArrayList<Rezerwacja>(); 

PreparedStatement st = null; 

ResultSet rs = null; 
String sql = "INSERT INTO rezerwacje (liczbaUczestnikow,idTermin) values ('" + liczbaUczestnikow + "','" + idTermin + "')" 
+ "UPDATE termin SET termin.czyZajety=true WHERE termin.idTermin = '"+ idTermin +"'";    

try 
{ 
    st = conn.prepareStatement(sql); 


     rs = st.executeQuery(); 


    while(rs.next()) 
    { 
     Rezerwacja rezerwacja = new Rezerwacja(); 
     rezerwacja.setLiczbaUczestnikow(rs.getInt(1)); 
     rezerwacja.setIdTermin(rs.getInt(2)); 
     rezerwacje.add(rezerwacja); 
    } 
} 
catch(SQLException e) 
{ 
    System.out.println(e); 
} 

Любые предложения

+1

Вы уверены, что вы не получаете SQLException? – miki

+0

Не совсем уверен. Могу ли я отобразить эту ошибку в веб-браузере (например, пересылка на somePage.jsp в сервлет) или на консоль? – abecadlo

+0

Вы не можете получить доступ к своим журналам сервера? Вместо того, чтобы распечатывать его, введите новое RuntimeException (e); то вы увидите его в браузере или инструментах вашего браузера, если это ajax. – miki

ответ

3

Вы должны использовать PreparedStatement, чтобы избежать SQL-инъекций Кроме того ваш SQL является неправильным:

String sql = "INSERT INTO rezerwacje (liczbaUczestnikow,idTermin) values ('" + liczbaUczestnikow + "','" + idTermin + "')" 
     + "UPDATE termin SET termin.czyZajety=true WHERE termin.idTermin = '"+ idTermin +"'";    

Вы не можете выполнять два разных оператора в одной партии. В вашем случае Insert и Update.

Создание двух PreparedStatement «S:

String sql1 = "INSERT INTO rezerwacje (liczbaUczestnikow,idTermin) values (?,?)"; 
String sql2 = "UPDATE termin SET termin.czyZajety=true WHERE termin.idTermin = ?"; 
PreparedStatement preparedStatement1 = con.prepareStatement(sql1); 
preparedStatement1.setString(1, liczbaUczestnikow); 
preparedStatement1.setInt(2, idTerminal); 
PreparedStatement preparedStatement2 = con.prepareStatement(sql2); 
preparedStatement2.setInt(1, idTerminal); 
preparedStatement1.executeUpdate(); 
preparedStatement2.executeUpdate(); 
+1

подготовленStatement2.setInt (1, idTerminal); –

+0

thx вы правы. –

+0

Сообщение перед редактированием работает ... Но, независимо от того, что я набираю в текстовый ввод «liczbaUczestnikow», он всегда вставляет 1 в таблицу mysql. – abecadlo

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