2010-06-11 3 views
3

가 처음SOAPUI & 그루비 스크립트, 나는 다음과 같은 코드 조각을 사용하고,

이전 테이블에 일부 데이터를 삽입 할 그루비 스크립트를 사용하는 일부 soapUI 테스트를, 가지고 간다 이 잘 작동

 def conn = context.dbConnEtopup 
     conn.execute("INSERT INTO A(ID, NAME) VALUES (1, "Johnny")") 

그러나 지금은 비슷한 (그렇지 않으면 동일) SQL 문을 여러 테스트 스크립트를 가지고, 그래서에서로드하여이 문제를 접근하려고 해요 : 코드는이 작업을 수행하는 속성 파일이므로 실제 SQL 문은 한 곳에서만 있으므로 편집하기 쉽습니다.

그러나, 내가 사용하려고 해요 내 SQL 문이 실제로이 개 삽입 (또는 삭제) 때문에 속성에로드되는 것입니다 :

DELETE * FROM TABLE_A; DELETE * FROM TABLE_B; 

conn.execute()가 난 단지 수 의미는 ;을 처리 할 수 ​​

먼저 DELETE 문을 사용하십시오.

어떻게이 문제를 해결할 수 있습니까? 각 속성을 별도로로드하고 실행하지 않아도됩니다. 이상적으로 나는 단지 하나의 속성을 원합니다. 그래서 나중에 더 많은 삭제 명령문을 추가 할 수 있습니다.

답변

3

세미콜론으로 속성 파일에 저장 한 다음 그것을 읽은 후에 제거 할 수 있습니까?

String sqlProperty = // read SQL property from file 
def statements = sqlProperty.split(";") 

// Execute each statment using conn (an instance of groov.sql.Sql?) 
statements.each { conn.execute(it); 
+0

일부 텍스트 필드에 세미콜론이 있으면 작동하지 않습니다. – hfm

5

일부 JDBC 드라이버는 여러 명령문을 지원하므로이 기능은 Groovy의 Sql 클래스를 통해 사용할 수 있습니다. with MySql :

def props = [user: 'myuser', password: 'mypassword', allowMultiQueries: 'true'] as Properties 
def url = 'jdbc:mysql://127.0.0.1:3306/mydb' 
def driver = 'com.mysql.jdbc.Driver' 
def sql = Sql.newInstance(url, props, driver) 
sql.execute """ 
    insert into PERSON (id, firstname, lastname) values (1, 'Dierk', 'Koenig'); 
    insert into PERSON (id, firstname, lastname) values (2, 'Guillaume', 'Laforge'); 
    insert into PERSON (id, firstname, lastname) values (3, 'Jon', 'Skeet'); 
""" 
관련 문제