2012-02-25 55 views
6

Tôi thành công có thể xóa một số nguyên nhưng khi tôi cố gắng để làm cho nó một STRING nó nói "không rõ cột itemtodelete trong mệnh đề where nhưng ITEMTODELETE của tôi là một STRING khai báo trong cơ sở dữ liệu không ? một số nguyên bao nhiêu Nó sẽ không xóa STRINGLàm thế nào để xóa một bản ghi (chuỗi) JAVA và MYSQL

dưới đây là mã của tôi:

private void DeleteButtonActionPerformed(java.awt.event.ActionEvent evt) {            
     int del = (prompt): 
     if (del == JOptionPane.YES_OPTION){ 
     DelCurRec(); 
     } 

    }  


    public void DelCurRec() { 

     String id = field.getText(); 
     String SQL = "DELETE FROM inventory WHERE ItemCode = "+id+" "; 

     try { 
      Class.forName(connectio); 
     } catch (Exception e) { 
      JOptionPane.showMessageDialog(null,""+e.getMessage(),"JDBC Driver Error",JOptionPane.WARNING_MESSAGE); 
     } 

     Statement stmt = null; 
     Connection con = null; 

     //Creates connection to database 
     try { 
      con = DriverManager.getConnection("Connection"); 
      stmt = con.createStatement(); 
     } catch (Exception e) { 
      JOptionPane.showMessageDialog(null,""+e.getMessage(),"Connection Error",JOptionPane.WARNING_MESSAGE); 
     } 

     //Execute the SQL statment for deleting records 
     try { 
      stmt.executeUpdate(SQL); 
      //This closes the connection to the database 
      con.close(); 
      //This closes the dialog 
      JOptionPane.showMessageDialog(null,"Deleted Succesfully","Delete Successful",JOptionPane.WARNING_MESSAGE); 
     } catch (Exception e) { 
      JOptionPane.showMessageDialog(null,""+e.getMessage(),"Communication Error",JOptionPane.WARNING_MESSAGE); 
     } 
    } 

Trả lời

6

thử thay đổi dòng:

String SQL = "DELETE FROM inventory WHERE ItemCode = "+id+" "; 

để

String SQL = "DELETE FROM inventory WHERE ItemCode = '"+id+"' "; 
+0

cảm ơn bạn! Nó hoạt dộng bây giờ :) – mix

0

Tôi nghĩ rằng bạn cần phải vượt qua Integer.parseInt(id) và không id ... giả sử bạn idint

5

ĐỪNG sử dụng một Statement sử dụng một PreparedStatement thay, nếu không ứng dụng của bạn sẽ dễ bị tổn thương để tiêm SQL. Ví dụ. một ai đó bước vào một chuỗi như: "'; drop table inventory; --"

Các Statment chuẩn bị tương ứng sẽ giống như thế:

String SQL = "DELETE FROM inventory WHERE ItemCode = ? "; 
PreparedStatement pstmt = null; 

// get a connection and then in your try catch for executing your delete... 

pstmt = con.prepareStatement(SQL); 
pstmt.setString(1, id); 
pstmt.executeUpdate(); 
Các vấn đề liên quan