2016-12-21 4 views
3

PreparedStatement을 여러 문장으로 사용할 수 있습니까?여러 문에 대한 PreparedStatement

예컨대, 내 말은 String sql = "INSERT INTO OR INGNORE ... ; UPDATE ... ; INSERT INTO ...";

PreparedStatement pre = conn.prepareStatement(sql); 
//... 
pre.executeUpdate(); 

이 (세미콜론까지)에만 첫 번째 문 "INSERT INTO OR INGNORE ...을 실행하는 경우. 한 번에 모두 실행할 수 있습니까?

+0

당신이 찾고있는 것은 일괄 처리입니다. 당신은 배치에있는 모든 문장을 삽입 한 다음 배치를 실행 – XtremeBaumer

+0

mysql 특정 솔루션이 있습니다 : http://stackoverflow.com/questions/10797794/multiple-queries-executed-in-java-in-single-statement – Vladimir

답변

1
String[] query = { "insert into Gericht (classification,date,name,preisExtern,preisIntern) values (?,?,?,?,?)", 
      "test" }; 
    PreparedStatement stmt; 
    for (String str : query) { 
     stmt = c.prepareStatement(str); 
     stmt.addBatch(); 
    } 
    stmt.executeBatch(); 

여기에 일괄 처리 사용 방법의 예가 나와 있습니다. 그게 네가 원하는게 아니라면 나 한테 말해줘.

달라고과 같이

@XtremeBaumer 방법 준비된 명령문 변화의 매개 변수 경우는 어떻습니까? 어떻게 동적으로 변경할 수 있습니까?

답변 : 당신은 할 수 없습니다

. 한 번에 여러 개의 다른 쿼리를 실행하려면 고정 명령문 만 사용할 수 있습니다. 그렇지 않으면 코드가 매우 커질 수 있습니다. 그런 다음 매개 변수를 설정하고 배치에 추가하여 수동으로 수행 할 수 있습니다. 당신이 다른 매개 변수를 가져옵니다 1 개 쿼리가있는 경우 일괄 좋은 당신은 그것을 한 번에 모든 실행 가능 한 번

+0

당신이 보여주고 싶어 나에게 같은 문장을 여러 번 실행하는 방법. 예? – Vyacheslav

+0

보세요. 여러 문장을 사용하는 방법을 추측하기가 정말 어려웠습니까? – XtremeBaumer

+0

@XtremeBaumer 준비된 명령문의 매개 변수가 변경되는시기는 어떻습니까? 어떻게 동적으로 변경할 수 있습니까? – msagala25

3

에 모두 추가 하시겠습니까?

이것은 데이터베이스 공급 업체의 JDBC 드라이버 구현에 따라 달라질 수 있지만 일반적으로 작동하지 않을 것으로 예상됩니다.

+0

왜 JDBC에 의존해야합니까? 어디서 찾았 니? – Vyacheslav

+0

[API] (https://docs.oracle.com/javase/7/docs/api/java/sql/PreparedStatement.html)에서는이 동작을 지정하지 않으므로 JDBC 구현자가 생각할 수있는 모든 작업을 수행 할 수 있습니다. –

+0

이는 TO가 동일한 문자열 * 내의 다른 SQL을 참조하는 질문에서 – XtremeBaumer