在 JTextField 的值中显示查询结果
Posted
技术标签:
【中文标题】在 JTextField 的值中显示查询结果【英文标题】:Display the result of a query in a JTextField's value 【发布时间】:2015-05-05 19:09:53 【问题描述】:我想在 jTextField 中显示来自数据库的新 id,但它没有.. 这是我的代码
public void actionPerformed(ActionEvent e)
try
DB con=new DB();
con.connecte();
String req = "SELECT Max(num) FROM condidat";
ResultSet rs = stmt.executeQuery(req);
int num = rs.getInt("num");
int nvNum=num+1;
txt_num.setText(valueOf(nvNum));
catch (ClassNotFoundException ex)
Logger.getLogger(Ajouter.class.getName()).log(Level.SEVERE, null, ex);
catch (SQLException ex)
Logger.getLogger(Ajouter.class.getName()).log(Level.SEVERE, null, ex);
//To change body of generated methods, choose Tools | Templates.
【问题讨论】:
您能否更具体地说明出了什么问题? 使用 jTextField.setText() 在我的 jTextField 中没有出现任何内容 1) 您是否在代码中添加了 System.out.println(...) 语句来验证 SQL 查询返回的值? 2) 如果显示一个值,那么问题是您没有对添加到 GUI 的文本字段的引用。也许你有一个同名的局部变量和一个实例变量。 谢谢,但它不起作用 如果您遇到错误,请发布错误消息。 【参考方案1】:您不调用ResultSet.next()
,ResultSet
中的列将不会称为num
,而是Max(num)
,如果您想要一个更好的名称,请使用AS
以这种方式更改您的查询/代码您的查询:
String req = "SELECT Max(num) AS maxnum FROM condidat";
ResultSet rs = stmt.executeQuery(req);
if (rs.next())
int num = rs.getInt("maxnum");
...
请记住 ResultSet 开始指向第一条记录之前,因此必须始终调用 next() 至少一次(这对于验证是否有实际数据也很有用,如果有,它将返回 false
没有更多的记录)。之后如果,ResultSet
就可以使用了,它指向第一条记录。
编辑:
因为看起来actionPerformed
甚至没有被调用,你是否将这个类注册为一些JComponent
的监听器,例如一个按钮?
JButton b = new Button("Click me");
b.addActionListener(this);
如果您单击此按钮,并且所有这些代码都在同一个类中,则将调用actionPerformed
。
【讨论】:
非常感谢,这是个好主意,但 jTextField 中没有任何内容!将该代码放在 actionPerformed 中是否正确??? 不多,尤其是在那里执行db连接不是一个好主意,它的操作速度较慢,甚至比执行查询还要慢。通常你会尝试在事件回调中只做最少必要的事情,比如actionPerformed
,可能还有其他监听器在等待被调用,而你正在延迟它们的执行。
@ViaTrasViaTras 请将valueOf
的代码添加到您的问题中,那里也可能有问题:) 看起来它返回一个空字符串。
我用一个没有连接到数据库的简单指令进行了测试,我只输入了 jTextField.setText("test") 并且它不起作用
文本字段是否正确显示在您的面板/框架/等中? txt_num.setText("test")
必须工作。【参考方案2】:
将整数值更改为字符串,因为 jTextField 仅显示文本 这边走: txt_num.setText(Integer.toString(nvNum));
【讨论】:
以上是关于在 JTextField 的值中显示查询结果的主要内容,如果未能解决你的问题,请参考以下文章
保持 jButton 灰色直到 jTextFields != null
如何在 JLabel 和 JTextField 上显示非科学格式的值?