【问题标题】:Java mysql insertJava mysql 插入
【发布时间】:2016-12-19 11:32:52
【问题描述】:

我是编程的新用户,我已经开始学习 Java,我一直在编写一个简单的程序来将在我的 UI 的文本字段中输入的数据插入到 MYSQL,我能够将数据插入到 MYSQL db。但问题是我无法关闭连接。当我在我的程序中编写代码来关闭连接时,会出现很多错误。

在不关闭连接的情况下插入数据的我的代码

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    try {
        String url = "jdbc:mysql://localhost/testdb";
        String user = "root";
        String password = "mysql";
        Connection myConn = DriverManager.getConnection(url, user, password);
        Statement myStmt = myConn.createStatement();
        String sql= "insert into table1 (no,name,address,password) values ('"+numberr.getText()+"', '"+namee.getText()+"', '"+addresse.getText()+"', '"+passworde.getText()+"')";
        myStmt.executeUpdate(sql);
        System.out.println("Insert complete");

    } catch(SQLException se){
        se.printStackTrace();
    }  

}

当我编写关闭连接程序时,我的代码如下所示并抛出很多错误:

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                        
    try {
        String url = "jdbc:mysql://localhost/testdb";
        String user = "root";
        String password = "mysql";
        Connection myConn = DriverManager.getConnection(url, user, password);
        Statement myStmt = myConn.createStatement();
        String sql= "insert into table1 (no,name,address,password) values ('"+numberr.getText()+"', '"+namee.getText()+"', '"+addresse.getText()+"', '"+passworde.getText()+"')";
        myStmt.executeUpdate(sql);
        System.out.println("Insert complete");

    } catch(SQLException se) {       
         se.printStackTrace();
    } catch(Exception e) {     
        e.printStackTrace();
    } finally {
        try {
            if(myStmt!=null) {
                myStmt.close();
            }
        } catch(SQLException se) {
        }// do nothing
        try {
            if(myConn!=null) {
                myConn.close();
            }
        } catch(SQLException se) {
            se.printStackTrace();
        } 
    }//end finally
    System.out.println("Goodbye!");   
}   

【问题讨论】:

  • 它会抛出什么样的错误?
  • 您应该查看为您的 SQL 准备的语句。该代码将使您对 SQL 注入开放。
  • 要获得适当的帮助,您需要编写适当的问题。显示您遇到的错误,并提供您遇到问题的代码的最小可验证示例。
  • 我无法运行它说类 xxx 没有主要方法的文件。但我有主要方法。

标签: java mysql netbeans


【解决方案1】:

您可以查看try with resources。这会将您的连接代码放在资源大括号中,当您完成或出现问题时,JVM 会自动为您关闭连接。

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

        String url = "jdbc:mysql://localhost/testdb";
        String user = "root";
        String password = "mysql";

        try (Connection myConn = DriverManager.getConnection(url, user, password)) {
            Statement myStmt = myConn.createStatement();
            String sql = "insert into table1 (no,name,address,password) values ('" + numberr.getText() + "', '"
                    + namee.getText() + "', '" + addresse.getText() + "', '" + passworde.getText() + "')";
            myStmt.executeUpdate(sql);
            System.out.println("Insert complete");

        } catch (SQLException se) {
            se.printStackTrace();
        }
    }

【讨论】:

  • 感谢您的回复,所以上面的代码足以在工作完成后关闭db连接。
  • 是的,当使用 try-with-resources 时,连接将在两种情况下自动关闭:正常执行和异常都包括在内。
猜你喜欢
  • 1970-01-01
  • 2012-11-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多