JDBC不会将数据插入mysql表

时间:2015-06-11 13:14:58

标签: java mysql jdbc

我在将数据插入mysql表时遇到问题。 JDBC不会将数据插入mysql表。 JDBC应该从输入中获得价值" liczbaUzytkownikow"和表格形式的数据,其中包含关于"终止"的信息。 (确切地说:termin.nazwaObiektu,termin.adresObiektu,termin.dzien,termin.odKtorej和termin.doKtorej)。

以下是此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 个答案:

答案 0 :(得分: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();