【问题标题】:Java Update JLabel With Database OutputJava 使用数据库输出更新 JLabel
【发布时间】:2015-04-14 22:23:13
【问题描述】:

所以我要做的是更新一个 JLabel,它将代表存储在我的数据库中的文件数。

我将使用 JDBC 将我的 Java 应用程序与我的数据库 (Oracle) 进行通信,并将一条 SQL 语句传递给我的数据库以返回输出,在这种情况下,它将是:SELECT COUNT(File_ID) FROM Files;,它的输出将是 50。

所以现在我想更新我的 Jlabel 我必须显示输出,在这种情况下它将显示为 50。

我知道如何使用来自数据库的结果更新 JTable,如下所示:

try {
    String query = "SQL STATEMENT GOES HERE";
    pat = conn.prepareStatement(query);
    rs = pat.executeQuery();
    myTable.setModel(DbUtils.resultSetToTableModel(rs));
}catch (Exception e) {
    e.printStackTrace();
}

但是,我从未使用输出来更新 Jlabel,如果您对如何实现这一点有任何建议或建议,将不胜感激。谢谢!

【问题讨论】:

标签: java database jdbc io jlabel


【解决方案1】:

只需使用 label.setText()

已编辑:我没有为 jlabel 找到等效的 TextModel(它存在于其他组件,例如 JTextField)。对您来说,通过“模型”是否很重要,或者 setText("50") 是否足够好?

要提取计数,请执行以下操作:

int count=0;
pat = conn.prepareStatement("SELECT COUNT ..."); // complete as required
ResultSet rs=pat.executeQuery();// assuming it's "SELECT COUNT..."
if(rs.next())
  count=rs.getInt(1);

【讨论】:

  • 我知道如何简单地设置 JLabel 文本。我的问题比这更深入一点。我需要弄清楚如何从我的数据库(以结果集的形式出现(使用 DBUtils)的形式)将输出更改为数据类型 String,然后存储在 String 变量中。然后我可以使用 label.setText(String);
  • 您的结果集应该包含一个整数类型的列,因此您将拥有“int count= rs.getInt(1)”。这应该很容易转换为文本,例如setText(""+count)
  • 首先让我说谢谢佩利特花时间处理这个问题。我进行了一些更改并提出了以下代码:try { String query = "SELECT COUNT(FILE_ID)FROM FILES WHERE USER_ID = 1"; pat = conn.prepareStatement(query); rs = pat.executeQuery(); if(rs.next()) output = rs.getInt(1); lblFiles.setText(String.valueOf(output)); } catch (Exception e) { e.printStackTrace(); } 但是我仍然收到一些 NullPointerExceptions(它似乎在线中断:lblFiles.setText(String.valueOf(output));
  • 您的代码对我来说似乎没问题。我的第一个怀疑是 lblFiles 为空 - 你能检查一下吗?您还可以告诉您的“输出”是声明为“int count”还是“Integer count”(后者也可以为null)
  • lblFiles 似乎不是空的,它只包含一个空字符串(等待更新)并且输出被声明为int output = 0;
猜你喜欢
  • 2015-05-26
  • 2012-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-19
  • 2019-12-04
相关资源
最近更新 更多