在 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 上显示非科学格式的值?

如何设置计时器以向 JTextField 显示结果时间?

利用sql注入

java如何实现用户在文本框中输入好友昵称,点击查询,根据用户输入匹配好友昵称,结果加载到下拉框中

SQL - 从表中连续出现的值中显示名称 ID