Я не могу удалить все строки в таблице MySQL - PullRequest
0 голосов
/ 04 января 2019

Здравствуйте. Я хочу удалить все строки в моей таблице mysql с именем "kosik" и передать их в другую таблицу с именем "obj_zoznam".

Я использую этот код в Java:

String orderstatus = "Accepted";
        try {
            stmt = con.createStatement();
            stmt2 = con.createStatement();
            stmt3 = con.createStatement();

            rs = stmt.executeQuery("select ID as idzaz, ID_pouzivatela as idpou, ID_tovaru as idtov, cena as suma, ks as kusy from kosik order by ID limit 1");

            while (rs.next()) {

                int zaz = rs.getInt("idzaz");
                int pou = rs.getInt("idpou");
                int tov = rs.getInt("idtov");
                int suma = rs.getInt("suma");
                int kusy = rs.getInt("kusy");

                String sstr = "insert into obj_zoznam (ID_pouzivatela, ID_tovaru, suma, ks, stav) values ("
                        + "'" + id_usera + "', "
                        + "'" + tov + "', "
                        + "'" + suma + "', "
                        + "'" + kusy + "', "
                        + "'" + orderstatus + "')";

                String sstr2 = "delete from kosik where ID = " + zaz;

                stmt2.executeUpdate(sstr);
                stmt3.executeUpdate(sstr2);
            }

            stmt.close();
            stmt2.close();
            stmt3.close();
        } catch (Exception e) {
            out.println("Error in writing: " + e.toString());
        }

Однако этот код всегда удаляет только одну запись из таблицы "kosik".Я пытаюсь понять, как удалить все записи в этой таблице.

Может кто-нибудь сказать мне, что я делаю неправильно?Я буду очень благодарен.

Спасибо.

Ответы [ 4 ]

0 голосов
/ 04 января 2019

Если вы хотите удалить записи, сохраняющие структуру таблицы, с помощью команды truncate должно работать.

truncate table kosik
0 голосов
/ 04 января 2019

Удалите LIMIT 1 из вашего SELECT, чтобы вы вывели все записи, а не только 1. В этой строке:

rs = stmt.executeQuery("select ID as idzaz, ID_pouzivatela as idpou, ID_tovaru as idtov, cena as suma, ks as kusy from kosik order by ID limit 1");

Снять ограничение 1:

rs = stmt.executeQuery("select ID as idzaz, ID_pouzivatela as idpou, ID_tovaru as idtov, cena as suma, ks as kusy from kosik order by ID");

НЕ удаляйте WHERE из DELETE, иначе вы выберете 1 запись (stmt), вставите ее в другую таблицу (stmt2), а затем очистите всю таблицу перед вставкой всех других записей. в obj_zoznam (stmt3).

0 голосов
/ 04 января 2019

вы ограничиваете результат запроса одной строкой, поэтому у вас всегда будет только один идентификатор.выполнение sstr2 всегда удаляет записи с первым идентификатором

0 голосов
/ 04 января 2019

Я пытаюсь понять, как удалить все записи в этой таблице.

Затем удалите условие фильтра where из вашего оператора delete

delete from kosik
...