【问题标题】:Displaying data in JTextfield from two different mysql tables在 JTextfield 中显示来自两个不同 mysql 表的数据
【发布时间】:2019-10-26 05:09:12
【问题描述】:

大家干杯,这里是初学者!

我目前正在开发一个 Java 应用程序来跟踪我们仓库中的库存。这一切都在本地主机上,直到完成。我在 MySQL 数据库中创建了两张表:一张表显示文章代码、位置和数量 (VOORRAADSYSTEEM);另一张表显示文章代码和描述(STAMDATA)。

在我的 GUI 中,我有一个从 VOORRAADSYSTEEM 加载数据的 JTable,并且在 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);
        }
    }

目前我不确定如何解决这个问题。我也将尝试使用外键。任何帮助将不胜感激。

【问题讨论】:

  • 重新格式化您的问题,以便更容易阅读您的代码将大大有助于人们帮助您。
  • @ck1221 感谢您的提示!我不太确定如何提出我的问题

标签: java sql netbeans


【解决方案1】:

有更好的方法来处理您想做的事情。例如,您可以通过在一个公共列(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);
    }
}

这对你来说应该会更好一点。

【讨论】:

  • 感谢您的意见。明天我会试一试,然后告诉你结果如何。 rs.getstring("description") 肯定会产生巨大的影响,我认为 :)
  • 我已经尝试了您建议的代码,它确实给了我更好的查询。谢谢你!我今天和我的老板谈了这件事,她实际上建议你做同样的事情,所以我会尝试这种方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-10-15
  • 1970-01-01
  • 2023-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多