Удаление данных в таблице
Что просто делать в SQL, так это удалять данные. Ты можешь удалить абсолютно все очень быстро, и у тебя даже никто не спросит никаких подтверждений.
Начнем с самого простого сценария: как удалить одну строку в таблице.
Этот сценарий ты будешь встречать чаще всего, обычно это удаление какой-то конкретной записи, и стандартный запрос обычно имеет вид:
DELETE FROM таблица WHERE id = 133;
Это единственный запрос, где не нужно указывать имена колонок: данные ведь удаляются сразу строками.
Второй сценарий – это удаление строк, которые заданы списком id, тут тоже все довольно просто:
DELETE FROM таблица WHERE id IN (1, 2, 3, …);
Третий сценарий – это удаление строк, которые соответствуют определенному условию:
DELETE FROM таблица WHERE условие;
Допустим, мы хотим уволить всех наших программистов, тогда нужно написать запрос типа:
DELETE FROM employee WHERE occupation = 'Программист';
И, наконец, если ты хочешь удалить все записи, то можешь написать такой запрос:
Такого простого запроса достаточно, чтобы удалить все записи из таблицы. Кстати, никакого Ctrl+Z при этом не будет. Записи просто удаляются без возможности восстановления и все. Так что делай бэкапы, да почаще.
5.2 Удаляем вообще все
Для быстрого удаления (чтобы добавить юзерам головной боли) у SQL есть еще несколько команд.
Как быстро удалить все данные в таблице? Воспользуйся оператором TRUNCATE :
Одна опечатка в названии таблицы — и пара дней восстановления данных тебе обеспечены. Радуйся, что ты не админ баз данных.
Если тебе нужно удалить не просто данные в таблице, а и саму таблицу, то для этого есть оператор DROP :
Кстати, аналогичные варианты есть и со схемами баз данных. Если хочешь удалить саму базу, то:
DROP DATABASE база_данных
Также с помощью DROP можно удалять:
И вот тебе пару интересных историй, связанных с удалением данных:
Удаление первой строки из таблицы с помощью DefaultTableModel в Java
Чтобы удалить первую строку из таблицы в Java, используйте removeRow() метод и установите его параметр в 0, так как вам нужно удалить первую строку, то есть индекс 0.
Давайте сначала посмотрим на пример для отображения таблицы со строками и столбцами. Таблица здесь имеет 9 строк –
пример
package my; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.table.DefaultTableModel; public class SwingDemo < public static void main(String[] argv) throws Exception < DefaultTableModel tableModel = new DefaultTableModel(); JTable table = new JTable(tableModel); tableModel.addColumn("Language/ Technology"); tableModel.addColumn("Text Tutorial"); tableModel.addColumn("Video Tutorial"); tableModel.addColumn("Interview QA"); tableModel.addRow(new Object[] < "Blockchain", "Yes", "No", "Yes">); tableModel.addRow(new Object[] < "C#", "Yes", "Yes", "Yes">); tableModel.addRow(new Object[] < "Java", "Yes", "No", "Yes">); tableModel.addRow(new Object[] < "NodeJS", "No", "Yes", "Yes">); tableModel.addRow(new Object[] < "MVC", "Yes", "No", "Yes">); tableModel.addRow(new Object[] < "ASP.NET", "Yes", "Yes", "Yes">); tableModel.addRow(new Object[] < "F#", "Yes", "No", "Yes">); tableModel.addRow(new Object[] < "SharePoint", "Yes", "Yes", "Yes">); tableModel.addRow(new Object[] < "AWS", "No", "No", "Yes">); table.setRowHeight(table.getRowHeight() + 10); JFrame f = new JFrame(); f.setSize(600, 400); f.add(new JScrollPane(table)); f.setVisible(true); > >
Вывод следующий. Первый ряд – «Блокчейн» –
Теперь мы удалим первый ряд. После удаления общее количество строк в приведенной выше таблице будет 8 –
package my; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.table.DefaultTableModel; public class SwingDemo < public static void main(String[] argv) throws Exception < DefaultTableModel tableModel = new DefaultTableModel(); JTable table = new JTable(tableModel); tableModel.addColumn("Language/ Technology"); tableModel.addColumn("Text Tutorial"); tableModel.addColumn("Video Tutorial"); tableModel.addColumn("Interview QA"); tableModel.addRow(new Object[] < "Blockchain", "Yes", "No", "Yes">); tableModel.addRow(new Object[] < "C#", "Yes", "Yes", "Yes">); tableModel.addRow(new Object[] < "Java", "Yes", "No", "Yes">); tableModel.addRow(new Object[] < "NodeJS", "No", "Yes", "Yes">); tableModel.addRow(new Object[] < "MVC", "Yes", "No", "Yes">); tableModel.addRow(new Object[] < "ASP.NET", "Yes", "Yes", "Yes">); tableModel.addRow(new Object[] < "F#", "Yes", "No", "Yes">); tableModel.addRow(new Object[] < "SharePoint", "Yes", "Yes", "Yes">); tableModel.addRow(new Object[] < "AWS", "No", "No", "Yes">); table.setRowHeight(table.getRowHeight() + 10); // remove first row from the table tableModel.removeRow(0); JFrame f = new JFrame(); f.setSize(600, 400); f.add(new JScrollPane(table)); f.setVisible(true); > >
Вывод теперь будет отображать, что мы успешно удалили первую строку, а остальные 8 строк будут видны –
Средняя оценка 0 / 5. Количество голосов: 0
Спасибо, помогите другим — напишите комментарий, добавьте информации к статье.
Видим, что вы не нашли ответ на свой вопрос.
Напишите комментарий, что можно добавить к статье, какой информации не хватает.
Как удалить строку из JTable?
Совет: если вы объясните, что вы уже попробовали и какие онлайн-уроки вы прочитали, люди будут более склонны вам помочь. Или дайте пример кода и скажите нам, какой бит не работает. Прочтите это, если вы еще этого не сделали : java.sun.com/docs/books/tutorial/uiswing/components/table.html
6 ответов
Чтобы удалить строку из JTable, вам нужно удалить целевую строку из базового TableModel. Если, например, ваш TableModel является экземпляром DefaultTableModel, вы можете удалить строку, выполнив следующие действия:
((DefaultTableModel)myJTable.getModel()).removeRow(rowToRemove);
Спасибо за помощь, но я использовал этот метод, и он не работает. на самом деле мой JTable использует модель LocationTable (созданную самостоятельно), модель абстрактной таблицы exteind, поэтому, когда я использую метод removeRow (i), он выдает ошибку как «невозможно разрешить removeRow ()» .. какую альтернативу я должен использовать ..
Хорошо, если вы создали свой собственный TableModel, то вы несете ответственность за создание собственного метода «removeRow». Посмотрите на исходный код DefaultTableModel, чтобы увидеть, как это делается. Простое решение — использовать DefaultTableModel. Почему вы думаете, что вам нужно создать пользовательскую TableModel? Пока вы не поймете основы использования моделей, используйте предоставленные значения по умолчанию.
Если вам нужно простое рабочее решение, попробуйте использовать DefaultTableModel.
Если вы создали свою собственную модель таблицы, которая расширяет AbstractTableModel, тогда вы также должны реализовать метод removeRow(). Точная реализация зависит от базовой структуры, которую вы использовали для хранения данных.
Например, если вы использовали Vector, это может быть примерно так:
public class SimpleTableModel extends AbstractTableModel < private VectorcolumnNames = new Vector(); // Each value in the vector is a row; String[] - row data; private Vector data = new Vector(); . public String getValueAt(int row, int col) < return data.get(row)[col]; >. public void removeRow(int row) < data.removeElementAt(row); >>
Если вы использовали List, это было бы очень похоже:
// Each item in the list is a row; String[] - row data; Listarr = new ArrayList (); public void removeRow(int row)
//Integer - row number; String[] - row data; HashMap data = new HashMap(); public void removeRow(Integer row)
И если вы используете такие массивы, как этот
тогда вам не повезло, потому что нет возможности динамически удалять элементы из массивов. Вы можете попытаться использовать массивы, отдельно сохраняя некоторые флаги, уведомляющие, какие строки удалены, а какие нет или каким-то другим коварным способом, но я бы посоветовал против этого. Это создало бы излишнюю сложность и фактически просто решало бы проблема, создавая другую. Это верный способ закончить здесь. Попробуйте использовать один из вышеперечисленных способов хранения данных таблицы.
Чтобы лучше понять, как это работает и что нужно сделать, чтобы ваша собственная модель работала правильно, я strong посоветую вам обратиться к Учебник по Java, DefaultTableModel API и исходный код.