2016-08-12 11 views
1

私はプログラミングの新しいユーザーです。私はJavaを学び始めました。私は、自分のUIのテキストフィールドに入力したデータをMYSQLに挿入する簡単なプログラムを書いており、MYSQLデータベースにデータを挿入できます。問題は私が接続を閉じることができないことです。私のプログラムで接続を閉じるためにコードを書くとき、エラーが多いです。Javaのmysqlの挿入

接続

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!"); 
} 
+1

どのようなエラーが発生しますか? –

+2

SQLのプリペアドステートメントを調べる必要があります。そのコードはSQLインジェクションを開いたままにします。 – peternyc

+1

適切なヘルプを得るには、適切な質問を書く必要があります。あなたが持っているエラーを表示し、問題のあるコードの最小限の検証可能な例を入れてください。 –

答えて

0

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(); 
     } 
    } 
+0

返事をありがとうので、上記のコードは、作業が完了した後にdb接続を閉じるのに十分です。 – Hara

+0

はい、try-with-resourcesを使用すると、接続は両方とも自動的に閉じられます。通常の実行と例外の両方がカバーされます。 –