2010-06-11 110 views
3

我有一些的soapUI测试,使用Groovy脚本先插入一些数据表SOAPUI和Groovy脚本,在一个执行多个SQL语句去

以前,我一直在使用下面的代码片段代码做到这一点:

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

这工作得很好,但是我有很多的测试脚本,现在做类似的(如果不相同)的SQL语句,所以我想通过从在加载它接近这个属性文件,所以我的实际SQL语句只在一个地方,为了更容易编辑

但是,我想用我的SQL语句,实际上是2个插入(或删除),所以要加载的特性是:

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 2015-04-26 16:28:58

5

某些JDBC驱动程序支持多种语句,然后可以通过Groovy的Sql类(例如,与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'); 
"""