![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| Art2 |
|
||||||||||
|
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 1.6.2012 Репутация: нет Всего: нет |
Привет всем. Нашел в интернете пример доступа к базе данных без ошибок,но что там не так таблица из базы не считывается.Помогите найти я сам новичок.
это главная форма
Это модель
JDBCAdapter
Я понимаю что так много выкладывать нельзя ну что поделать.Помогите разобраться. |
||||||||||
|
|||||||||||
| Art2 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 1.6.2012 Репутация: нет Всего: нет |
Смотрю все так и горят желанием объяснить новичку в чем проблема.
|
|||
|
||||
| AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: 10 Всего: 118 |
Во-первых - надо иметь терпение - были выходные и многие к компу даже не подходят.
Во-вторых - а в чем проблема, что надо искать в данном коде ? |
|||
|
||||
| Art2 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 1.6.2012 Репутация: нет Всего: нет |
Окно открывается, но не происходит отрисовка таблицы с данными из базы данных.Что может быть не так? никаких ошибок не выдает.
|
|||
|
||||
| AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: 10 Всего: 118 |
При быстром ознакомлении с кодом вопрос - а где собственно модель устанавливается в JTable ?
В классе f создается TableSorter, но без указания модели данных. И без последующей установки этой модели. Т.е. обращения к базе вообще отстутствует как факт. Я бы пошел пока более простым путем - очень много намешано. TableSorter, JDBCAdapter, TableMap. Причем JDBCAdapter не используется. "Из-за деревьев леса не видно". Видно, что есть попытка сортировки. Класс TableMap не связан толком с моделью - тот же метод getValueAt явно не может работать нормально - он вызывает метод суперкласса, который его по сути не имеет. Может пока упростить себе задачу ? |
|||
|
||||
| Art2 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 1.6.2012 Репутация: нет Всего: нет |
Я новичок и только начал изущение, а с Jtable как то управиться не могу. Можно и упростить этот пример просто нашел было написано рабочий.Я пытаюсь сделать форму на которой находиться просто Jtable он соединяеться с базой данных берет данные и показывает пользователю.
|
|||
|
||||
| Art2 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 1.6.2012 Репутация: нет Всего: нет |
Может поможете отсечь не нужное чтобы работала нормально.
|
|||
|
||||
| AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: 10 Всего: 118 |
Тут есть принципиальный вопрос - что надо сделать ?
1. Просто вытащить сразу все данные из таблицы и поместить это в JTable ? 2. Или хочется сделать более сложный вариант - ходить "виртуально" по таблице постранично. Это гораздо сложнее. |
|||
|
||||
| Art2 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 1.6.2012 Репутация: нет Всего: нет |
Второй вариант думаю для изучения будет лучше.Скорей всего для этого нужна сложная Модель Таблицы.
Что для этого надо (форма с JTable и кнопками,модель таблицы которая соединяется с базой и передает данные в JTable, ....) что то еще? Это сообщение отредактировал(а) Art2 - 7.6.2012, 18:17 |
|||
|
||||
| AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: 10 Всего: 118 |
Второй конечно лучше для изучения, но требует бОльших усилий.
Надо сначала написать удобнуж модель. Значит берем AbstractTableModel и реализуем по сути три метода 1. public int getRowCount(); 2. public int getColumnCount(); 3. public Object getValueAt(int row, int column); По идее надо тогда делать некоторый буфер, который будет содержать какое-то количество строчек из базы данных. Тут надо будет учесть, что получение записей будет зависеть от SQL-сервера. Каждый SQL реализует это по-своему. Это раз. Второе - раз мы все данные сразу не вытаскиваем, то надо будет организовать более-менее приличное подтягивание нужного куска. Это непростая задача. Третье - если мы берем данные из таблицы, то количество данных будет меняться. Это тоже неприятно. Пока можно предположить, что количество данных не меняется. ТОгда задача номер 3 упраздняется. Второе - предлагаю взять MySQL - там достаточно просто можно организовать вытаскивание нужных кусков данных через добавление limit. Например SELECT * FROM table limit LIMIT 10, 20 Начинаем с 10-й записи и вытащим 20 штук. ТОгда останется задача 2. Здесь можно попробовать анализировать когда метод getValueAt вызывается первый раз. Выделяем некоторый буфер для хранения - тот же List порядка 100 записей. И запоминать с какой по какую запись из таблицы мы в нем храним. Как только в getValueAt потребуется овый кусок - делаем запрос в базу, вытаскиваем новый кусок, азпоминаем в List. Ну где-то так. |
|||
|
||||
| Art2 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 1.6.2012 Репутация: нет Всего: нет |
У меня некоторые проблемы
1)я не могу установить MySQL 2)как реализовывается public int getRowCount(); public int getColumnCount(); public Object getValueAt(int row, int column); если можно ссылка на статью и на работающий код примерный. Данные в таблице будут обновляться где то раз в день. |
|||
|
||||
| AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: 10 Всего: 118 |
1. Если есть возможности получать такие же варианты с Derby - используй Derby. Просто я ее не знаю.
2. getRowCount - ну видимо надо сделать запрос к базе типа SELECT COUNT(*) FROM table getColumnCount - ну сколько там у тебя слобцов - по идее число постоянное. getValueAt - а вот это и есть главная проблема. Для заглушки можешь пока сделать возврат постоянной строки. Когда отладишь вариант с первыми двумя функциями и прочей графикой - можно будет плотно заняться и этим. Само собой в модели надо будет сразу сделать коннект к базе. А может и более прилично - сделать коннект раньше (например при старте приложения) и его уже отдать в модель. Хотя и это не супер красиво, но для начала нормально. |
|||
|
||||
| Art2 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 1.6.2012 Репутация: нет Всего: нет |
Спасибо будем пробывать.
|
|||
|
||||
| Art2 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 1.6.2012 Репутация: нет Всего: нет |
Форму я создал вроде посмотрите
А вот с моделью проблемы.Для статических данных могу сделать, а вот для работы с базой трудности.Можете что то посоветовать статьи там книги именно про модель таблицы для работы с базой.Или как нибудь объяснить как работает модель с базой. |
|||
|
||||
| AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: 10 Всего: 118 |
Если по варианту простого втягивания всех данных сразу, то тут неплохо - http://www.javatalks.ru/sutra44951.php
А вот вариант постраничного - http://www.java2s.com/Code/Java/Swing-JFC/...argedataset.htm |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, jk1. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: GUI и Java FX приложения | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |