我在将数据插入mysql表时遇到问题。 JDBC不会将数据插入mysql表。
JDBC应该从输入“ liczbaUzytkownikow”和“表形式的数据中获取值”,该表形式包含有关“ termin”的信息(确切地说: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);
}


有什么建议么 ?

最佳答案

您应该使用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();

07-25 22:54