SOAPUI& Groovy脚本,一次执行多个SQL语句

时间:2010-06-11 16:31:34

标签: sql groovy soapui

我有一些soapUI测试,使用groovy脚本首先将一些数据插入表中

以前,我一直在使用以下代码片段来执行此操作:

      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 个答案:

答案 0 :(得分: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');
"""

答案 1 :(得分: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);

答案 2 :(得分:1)

有时这还不够好。查看我的解决方案:Running multiple SQL statements from Groovy