2012-05-12 3 views
0

Привет всем, мне интересно, как я могу получить данные из базы данных mysql в виде таблицы, которая находится в файле fxml. Я должен получить данные и поместить их в таблицу, которая находится в файле fxml. У меня есть идея, как я буду подключаться к базе данных, но я не знаю, как получить данные и поместить их в tableview.TableView в FXML с данными из базы данных

Табличное представление находится в файле fxml. Если я все еще здесь, кто-нибудь знает после того, как я импортирую данные, как я могу редактировать ячейки в этом представлении таблицы?

Приложение, над которым я работаю, является настольным!

Большое спасибо и извините за мой плохой английский!

ответ

3

Существует несколько способов сделать это, один из них - использовать адаптер JDBC от DataFX.

Update

сам FXML просто определяет структуру интерфейса XML на основе, он не может загрузить данные из базы данных.

Когда данные берутся из базы данных, создание статического файла fxml, содержащего значения данных, вероятно, является плохой идеей в большинстве случаев. В любое время, когда данные в базе данных меняются, вам нужно будет сгенерировать и загрузить новый файл fxml, и для этого вам понадобится либо создать новый файл вручную, либо написать хрупкую программу для создания нового файла fxml на основе данных в база данных.

Предлагаемый подход:

  1. Используйте FXML только определить структуру Tableview, но не содержат фактических значений данных.
  2. В Java Java код Java подключитесь к базе данных mysql.
  3. Используйте источник данных DataFX JDBC для извлечения данных из базы данных и заполнения TableView.

Вы можете написать свой собственный код, чтобы сделать шаг 3. Использование собственного кода может быть хорошей идеей, если вы хотите использовать JPA (что, по-моему, DataFX в настоящее время не поддерживает напрямую). В противном случае вы, скорее всего, получите лучшие результаты быстрее, используя реализацию DataFX.

Чтобы узнать, как делать изменения в TableView, читайте это TableView tutorial. Опять же, DataFX поможет вам, предоставив Control Cell Factories для редактирования, поэтому я бы рекомендовал использовать DataFX для этого, а не ручное кодирование обработки редактирования TableView.

Я не уверен, поможет ли вам код DataFX, когда вам необходимо внести изменения в базу данных; в этом случае вам, вероятно, потребуется добавить свой собственный JDBC или JPA-код для фиксации изменений.

+0

Я видел API, но мне нужно что-то для файлов fxml. Я хочу загрузить данные из fxml! Спасибо –

+0

Добавлено обновление о том, почему fxml не может загружать данные из базы данных и добавляет подробный предлагаемый подход. – jewelsea

+0

Есть ли у вас какие-то фрагменты о том, как использовать JDBC-источник для извлечения данных? – AsirC

1

AFAIK, вы не можете извлекать и отображать данные из БД в файле FXML и делать ячейки tableview редактируемыми в файле FXML. Хотя это возможно (возможно, частично через пользовательские Builder и BuilderFactory), это не рекомендуется делать в смысле MVC. Пожалуйста, прочитайте о Why Use FXML и его преимуществах в первую очередь. Тем не менее вы можете определить некоторые базовые структуры данных в файле FXML, если это так необходимо, см. Introduction to FXML.
Итак, ваши задачи, связанные с неотображением, в методе контроллера initialize(), а именно извлечение данных и установка элементов таблицы. Настройте клеточные фабрики столбцов таблицы для поддержки редактирования и т. Д.

+0

Так что я могу сделать это с контроллера fxml, как я понимаю! Правильно? –