2015-01-04 4 views
2

이것은 제 기능입니다. 제품의 두 매개 변수 ID와 이름을 가져옵니다. 함수는 데이터베이스에서 행을 MySQL 명령으로 삭제합니다. 나는 코드에 누락 된 줄이 있다는 것을 알고있다. 나는 막혔고, 어떻게 끝내야할지 모른다. 또한 SQL 행이 올바르지 않다는 것도 알고 있습니다. 문자열 "이름"을 조합 한 경우 확실하지 않습니다.JSP로 MySQL에서 데이터베이스의 행을 삭제하는 방법은 무엇입니까?

public static deletePro(int cat, String name) { 

    DB db = new DB(); 
    String sql = "delete from products where pname=+'name' and catid=" + cat; 
    ResultSet rs = db.getResultSet(sql); 

    try { 
     while (rs.next()) { 
      Products prod = new Products(); 
      prod.setNamePro(rs.getString(name)); 
      prod.setAmount(rs.getInt(cat)); 
     } 

     rs.close(); 
     db.closeCon(); 
    } catch (SQLException e) { 
     e.printStackTrace(); 
    } 

    return 
} 
+1

무엇이 당신의 질문입니까? – bolov

+0

"데이터베이스에서이"sql "줄을 사용하여 삭제하고 싶습니다.> 제 질문은 내 코드가 맞습니까? –

+3

"내 질문은 내 코드가 맞습니까? *"하하. 그것은 단 한 가지 질문으로 이어집니다. 바로 그것이 옳은지 스스로 스스로 시도해 보는 것이 어떻습니까? SQL 문은 불안정하고 편집 할 수없는 것으로 보입니다. 백엔드 데이터베이스 (MySQL 터미널, MySQL WorkBench, MySQL GUI 또는 기타)에서 직접 SQL 문을 공식화하고 시도한 다음 백엔드 데이터베이스에서 완전히 성공한 경우에만 Java 코드에 임베드하십시오. 더욱이 항상 ['PreparedStatement'] (http://docs.oracle.com/javase/8/docs/api/java/sql/PreparedStatement.html) 사용을 주장합니다. 이렇게하면 SQL 주입 기회가 완화됩니다. – Tiny

답변

2

문자열 SQL = "제품을 어디에서 삭제 PNAME = + '이름'과 CATID ="+ 고양이;

String sql = "DELETE FROM products WHERE pname='" + name + "' and catid = " + cat; 

그리고 선호하는 방법은 사용 자리하여 쿼리 문자열 조작의 고통을 완화 것이다, PreparedStatement을 사용하는 것입니다 :

이 있어야한다

String sql = "DELETE FROM products WHERE pname= ? and catid = ?"; 

PreparedStatement ps = con.prepareStatement(sql); 
ps.setString(1, name); 
ps.setInt(2, cat); 

ps.executeUpdate(); 

희망이 도움이됩니다.

관련 문제