JTable TableRowSorter или повторный запрос MySQL DB? - PullRequest
0 голосов
/ 31 мая 2011

Используя JDBC и MySQL, я отображаю таблицу MySQL в JTable. В настоящее время, как только мое Java-приложение запускается, к базе данных запрашиваются все результаты (например, SELECT * FROM tableExample), которые затем отображаются в JTable.

Мой вопрос: если я хочу применить фильтр (или два), лучше ли повторно запросить таблицу MySQL и обновить JTable, или лучше использовать TableRowSorter ()?

В настоящее время моя таблица содержит ~ 23 000 результатов.

Также, если у кого-то есть совет или пример кода, как обновить JTable из нового запроса, я был бы очень признателен.

Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 31 мая 2011

Каждый JTable имеет TableModel, который содержит его данные.Реализация по умолчанию - DefaultTableModel, но вы можете реализовать свой собственный, в зависимости от фильтров, которые вы хотите использовать.Если вы снова запросите базу данных, вы можете установить данные в TableModel или установить новый экземпляр TableModel в JTable.

model = new DefaultTableModel();
table = new JTable(model);

...query the database, do either:
model.setDataVector(...);
table.setModel(new DefaultTableModel(...));

Вопрос, лучше ли запрашивать базу данных или делатьна клиентскую фильтрацию / сортировку нельзя ответить универсально.Это зависит от вашей среды и вашего варианта использования.Если вы делаете запрос из удаленной базы данных, может быть лучше выполнить клиентскую фильтрацию, поскольку передача 23 тыс. Строк данных займет много времени.Если ваш клиент довольно медленный компьютер, сортировка в базе данных может быть быстрее, чем в Java.Если такого рода ресурсы не являются проблемой, используйте любое решение, которое вам удобнее.Сортировка в Java немного сложнее, чем в SQL, с другой стороны, фильтрация более универсальна при реализации в Java.

1 голос
/ 31 мая 2011

Есть много способов обойти ваш вопрос, например Таблица из базы данных или Таблица результатов ResultSet

поиск и в этом форуме,

поискна Google с ResultSetTableModel,

его харт, чтобы сказать, какой обходной путь лучше,

, но Currently my table contains ~23,000 results. для этого было бы лучше уменьшить количество строк в выражении SQL,

...