Отображение данных в JTextfield из двух разных таблиц mysql - PullRequest
0 голосов
/ 11 июня 2019

Приветствует всех, новичок здесь!

В настоящее время я работаю над приложением Java для отслеживания запасов на нашем складе.Это все на локальном хосте, пока не закончится.Я создал две таблицы в базе данных MySQL: одна таблица показывает код статьи, местоположение и количество (VOORRAADSYSTEEM);другая таблица показывает код статьи и описание (STAMDATA).

В моем GUI у меня есть JTable, который загружает данные из VOORRAADSYSTEEM, а на mouseclickevent (getSelectedRow) показывает данные в соответствующих JTextFields (пока что)настолько хорошо).Единственное поле, которое не отображается, это поле описания (которое следует прочитать из таблицы STAMDATA).

Я попытался создать метод для этой конкретной части программы.Метод выполняет запрос ко второй таблице, используя внутреннее соединение с первой таблицей.Вот код ниже.

 private void LoadDescription() {
        try {
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/ABEL?zeroDateTimeBehavior=convertToNull", "root", "");
            String sql = "SELECT DESCRIPTION FROM VOORRAADSYSTEEM JOIN STAMDATA ON ARTICLECODE = ARTICLENUMBER WHERE ARTICLECODE="+jComboBox1.getSelectedItem();
            pst = conn.prepareStatement(sql);
            rs = pst.executeQuery();
            pst.setString(2, sql);
            descriptionTxt.setText(rs.getString(sql));
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, e);
        }
    }

В данный момент я не совсем уверен, как решить эту проблему.Я также собираюсь попробовать использовать внешние ключи.Любая помощь будет оценена.

1 Ответ

0 голосов
/ 11 июня 2019

Есть лучшие способы справиться с тем, что вы хотите сделать.Например, вы можете получить всю необходимую информацию с помощью одного запроса, присоединив таблицу к общему столбцу (ARTICLENUMBER и ARTICLECODE), а затем отобразить ее.

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

Однако в вашем методе описания загрузки есть некоторые ошибки:

private void LoadDescription() {
    try {
        conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/ABEL?zeroDateTimeBehavior=convertToNull", "root", "");
        String sql = "SELECT DESCRIPTION FROM VOORRAADSYSTEEM JOIN STAMDATA ON ARTICLECODE = ARTICLENUMBER WHERE ARTICLECODE="+jComboBox1.getSelectedItem();
        ResultSet results = conn.createStatment().executeQuery(sql);

        if(results.next()) //make sure something was returned to avoid null pointer exception
            descriptionTxt.setText(rs.getString("DESCRIPTION"));
        else
            JOptionPane.showMessageDialog(null, "no results returned");
    } catch (Exception e) {
        JOptionPane.showMessageDialog(null, e);
    }
}

Это должно работать немного лучше для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...