abecadlo
abecadlo

Reputation: 111

JDBC does not Inserting data into mysql table

I have problem with inserting data into mysql table. JDBC doesnt inserting data into mysql table. JDBC should get value from input "liczbaUzytkownikow" and "data from table form which contains informations about "termin" (Exactly: termin.nazwaObiektu, termin.adresObiektu, termin.dzien, termin.odKtorej and termin.doKtorej).

Here is code of this 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);
}

Any suggestions ?

Upvotes: 0

Views: 545

Answers (1)

nano_nano
nano_nano

Reputation: 12523

You should use PreparedStatement to avoid sql injection attacks. Furthermore your sql is wrong:

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

you cannot execute two different statements in a single batch. In your case an Insert and an Update.

Create two 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();

Upvotes: 3

Related Questions