2015-06-11 39 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

不太确定。我可以在Web浏览器中显示此错误(例如,转发到Servlet中的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 +"'";    

您无法在单个批次中执行两个不同的语句。 在你的情况下,InsertUpdate

创建两个PreparedStatement的:

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

is preparedStatement2.setInt(1,idTerminal); –

+0

thx你是对的。 –

+0

编辑前的文章工作...但是,无论我输入“liczbaUczestnikow”文本输入,它总是将1插入到MySQL表中。 – abecadlo