java - 在 jbutton 中使用 netbeans 自动生成的 jtextfield 进行 mysql 搜索

标签 java swing netbeans jbutton jtextfield

我是java语言的菜鸟,但我正在尝试为mysql数据库创建一个搜索功能。 我已经设法让搜索功能使用定义的字符串,但我不知道自动生成的 jtextfield 如何工作,也不知道如何将其连接到自动生成的 jbutton。

这是我的 jtextfield 和 jbutton 代码:

private void jTextField1ActionPerformed(java.awt.event.ActionEvent evt) {                                            

   //  jTextField1.addActionListener(this);

} 

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         

   jTextField1.getText();
   jComboBox1.getSelectedItem().toString();

    try {
        Connection con = DriverManager.getConnection("jdbc:ucanaccess://C:/Michel's Muziek Magazijn.accdb");

        Statement stmt = con.createStatement();
        ResultSet rs = stmt.executeQuery("SELECT * FROM mmm WHERE "+jComboBox1+" = '"+jTextField1+"'");

    while (rs.next()) {
            System.out.println("\t" + rs.getString(2) + "\t" + rs.getString(3)+ "\t" + rs.getString(4));
        }
        rs.close();

    } catch (SQLException e) {
        System.out.println(e);
    }

}                    

就像我说的,我不知道要在 jtextfield 中插入什么内容,也不知道如何将插入的数据发送到 jbutton。

如果有人能帮助我,我将非常感激,因为这个问题的答案也可以完全完成我添加到数据库的插入功能。

非常感谢您的阅读,

莫纳里斯

最佳答案

您可以使用类似的方法将文本字段操作重定向到按钮。

private void jTextField1ActionPerformed(java.awt.event.ActionEvent evt) {                                            

   jButton1ActionPerformed(evt)

} 

这意味着当用户按下Enter时,也会触发搜索,这是一个不错的功能

您需要分配文本字段和组合框返回的值...

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         

   String text = jTextField1.getText();
   String combo =jComboBox1.getSelectedItem().toString();

    try {
        Connection con = DriverManager.getConnection("jdbc:ucanaccess://C:/Michel's Muziek Magazijn.accdb");

        Statement stmt = con.createStatement();
        ResultSet rs = stmt.executeQuery("SELECT * FROM mmm WHERE "+combo+" = '"+text+"'");

    while (rs.next()) {
            System.out.println("\t" + rs.getString(2) + "\t" + rs.getString(3)+ "\t" + rs.getString(4));
        }
        rs.close();

    } catch (SQLException e) {
        System.out.println(e);
    }

}                    

话虽如此,我强烈建议您改用 PreparedStatement

PreparedStatement stmt = con.prepareStatement("SELECT * FROM mmm WHERE ? = ?");
stmt.setString(1, combo);
stmt.setString(2, text);
ResultSet rs = stmt.executeQuery();

参见Using PreparedStatements了解更多详情

您也没有很好地管理您的资源,您应该确保在使用完各种资源后关闭它们...

try (Connection con = DriverManager.getConnection("jdbc:ucanaccess://C:/Michel's Muziek Magazijn.accdb")) {
    try (PreparedStatement stmt = con.prepareStatement("SELECT * FROM mmm WHERE ? = ?")) {
        try (ResultSet rs = stmt.executeQuery()) {
            //...
        }
    }
} catch (SQLException e) {
    e.printStackTrace();
}

看看The try-with-resources Statement了解更多详情

关于java - 在 jbutton 中使用 netbeans 自动生成的 jtextfield 进行 mysql 搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27726767/

相关文章:

java - 使用private关键字

java - 无法在索引 20 处解析文本 '2021-06-22T18:27:03.5577Z'

java - 将饼图设置为 JLabel 而不是新框架

java - 如何从netbeans创建可执行程序

java - 无法运行带有嵌入式 Glassfish 的 Arquillian

java - Spring MVC错误: org. springframework.web.HttpMediaTypeNotAcceptableException

java - 将 JGoodies Panel 的最大宽度设置为 JScrollPane 大小

java - jcombobox 用 hashmap 填充

netbeans - 如何远程运行 Selenium RC + PHPUnit + NetBeans?

java - 无法在 Eclipse 中连接到 VM