2013-01-12 4 views
-1

자바 클릭 mysql 데이터베이스 연결 및 단추 클릭 이벤트 레코드 삽입 삽입 할 수 있습니까? 이것은 jframe에서 사용하는 코드이지만 작동하지 않습니다. 오류가 있습니다.자바 클릭 삽입 이벤트에서 데이터베이스에 레코드 삽입

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

    user=txtuser.getText(); 
     char[] pass=jPasswordField1.getPassword(); 
      String passString=new String(pass); 
      try{     
       **Connection con =createConnection();**    


java.sql.PreparedStatement statement= con.prepareStatement ("INSERT INTO login(username,Password) VALUES ('" + user + "','" + passString + "')"); 

statement.setString(1,user); 
    statement.setString(2,passString); 
statement.execute(); 
      } 
      catch(Exception e){ 
       JOptionPane.showMessageDialog(null,"Exception: "+ e.toString()); 
      } 

public static void main(String args[]) { 
try { 
      Class.forName("com.mysql.jdbc.Driver"); 
      String connectionUrl = "jdbc:mysql://localhost/Stock?"+ 
            "user=root&password="; 
      Connection con = DriverManager.getConnection(connectionUrl); 
     } catch (SQLException e) { 
      JOptionPane.showMessageDialog(null,"SQL Exception: "+ e.toString()); 
     } catch (ClassNotFoundException cE) { 
      JOptionPane.showMessageDialog(null,"Class Not Found Exception: "+ cE.toString()); 
     } 

답변

0

귀하의 Connection 변수는 사용자의 try/catch 블록에 속합니다. 당신은 블록과 사용 외부 선언을 이동해야합니다

con = createConnection(); 

try/catch 블록 자체 내에서. 올바른 SQL 문자열을 구축하고 SQL Injection 공격으로부터 당신을 보호 할 PreparedStatement 자리 (?)를 사용하여

:

PreparedStatement statement = 
    con.prepareStatement ("INSERT INTO login(username, Password) VALUES (?, ?)"); 

또한, 데이터베이스 쓰기 작업에 executeUpdate를 사용합니다.

statement.executeUpdate(); 
0

매개 변수를 선언 할 때는 parameter placeholder (?)을 사용해야합니다. 변수를 연결하지 마십시오.

String strQuery = "INSERT INTO login(username,Password) VALUES (?,?)"; 
java.sql.PreparedStatement statement = con.prepareStatement(strQuery); 
statement.setString(1,user); 
statement.setString(2,passString); 

UPDATE 1

private void btnlogActionPerformed(java.awt.event.ActionEvent evt) 
{          
    user=txtuser.getText(); 
    char[] pass=jPasswordField1.getPassword(); 
    String passString=new String(pass); 
    try 
    {     
     Connection con = createConnection();   
     String strQuery = "INSERT INTO login(username,Password) VALUES (?,?)"; 
     java.sql.PreparedStatement statement = con.prepareStatement(strQuery); 
     statement.setString(1,user); 
     statement.setString(2,passString); 
     statement.executeUpdate(); 
    } 
    catch(Exception e) 
    { 
     JOptionPane.showMessageDialog(null,"Exception: "+ e.toString()); 
    } 
} 
+0

statement.execute(); 

유는 무엇을 의미합니까 바꾸기? 위의 코드를 편집 할 수 있습니다 .. – user1966589

+0

@ user1966589 업데이트를 참조하십시오. –

+0

연결시 구문 오류가 발생합니다. con = createConnection(); – user1966589

관련 문제