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

时间:2014-12-31 22:10:00

标签: 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。

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

已经感谢阅读,

Molnaris

1 个答案:

答案 0 :(得分:1)

您可以使用类似..

之类的内容将文本字段操作重定向到按钮
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了解详情