2013-10-08 4 views
0

데이터베이스에서 일부 작업을 수행하기 위해 준비된 문을 사용하고 있습니다. 나는 다음과 같이 테이블이 :두 개 이상의 매개 변수가있는 준비된 문을 사용하여 레코드 삭제

+--------------------------------------------------------+ 
|Field | Type | Size | Key | Text   | 
+--------------------------------------------------------+   
|X1DEL | Char |  1 |  2 | Status   | 
|X1CMP | Zoned |  3 |  1 | Company No.  | 
|X1ORD | Zoned |  9 |  2 | Order Number  | 
|X1TYPE | Char |  1 |  1 | Transaction Type | 
|X1ORDT | Zoned |  8 |  0 | Order Date  | 
|X1CUST | Char | 10 |  0 | Customer Number | 
|X1PO | Char | 20 |  0 | PO Number  | 
|X1OTOT | Zoned | 11 |  2 | Order Total  | 
+--------------------------------------------------------+ 

내가 단일 매개 변수에 대한 delete from my_table where field=? 하나 개 삭제 쿼리를하고있는 중이 야. 2 개의 매개 변수에 대한 쿼리를 delete from my_table where field=? and type=? 으로 작성했습니다. 이제 다시 4 ~ 5 개의 매개 변수에 대한 쿼리를 실행하고 싶습니다. delete from my_table where field=?,type=?,size=? and key=? 이 쿼리를 시도했지만 결과를 얻지 못했습니다.

+1

내가하고 싶은 일이 불분명합니다. 4 개의 조건을 가진 질의를 만들고 싶다면, 조건을 만들려면 적절한 방법이 아니며,',', 아니요,'AND' 또는'OR'을 사용해야합니다. –

+0

두 개 이상의 매개 변수에 대해 작동합니까? – codemaniac143

+0

나는 2 개 이상의 매개 변수에 대해 작동하지 않을 것이므로 질문을했습니다. – codemaniac143

답변

3

의도적으로 매개 변수의 수와 함께 쿼리를 작성하려면 use prepared statements. 당신의 매개 변수가 collection에있는 경우

final String sql = "delete from my_table where field=? and type=? and size=? and key=?"; 

는 링크 된 튜토리얼 및 "make coding easier by using a for loop or a while loop to set values for input parameters"의 조언을 사용할 수 있습니다. type 및 제공하는 매개 변수의 수에 따라 각각에 대해 적절한 .set 메서드를 호출해야합니다.

//assuming con (DB connection) is properly setup 
final PreparedStatment statement = con.prepareStatement(sql); 
statement.setString(1, "X1DEL"); 
statement.setString(2, "CHAR"); 
statement.setInt(3,1); 
statement.setInt(4, 2); 

//... etc 

준비된 문은 1-based 색인 생성이라는 것을 기억해야합니다.

+0

왜 문자열과 준비된 진술이 여기에 최후입니까? – codemaniac143

+0

주로 습관이되었던 업무 경험으로 인한 협약으로 인해. – Origineil

1

왜 2 매개 변수 예제에서 올바른 방법을 제시했을 때 그렇게 했습니까?

delete from my_table where field = ? and type = ? and size = ? and key = ? 
+0

그것은 더 많은 매개 변수에 대해 작동합니까? – codemaniac143

+0

당신이 직접 해보고이 댓글을 게시 한 이후로 39 분 내에 쉽게 대답 할 수있었습니다. 코드를 잘못 작성하면 오류가 발생합니다. – duffymo

관련 문제