【问题标题】:SOAPUI & Groovy Scripts, executing multiple SQL statements in one goSOAPUI & Groovy Scripts,一次执行多个 SQL 语句
【发布时间】:2010-11-28 09:22:01
【问题描述】:

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

以前,我一直在使用以下 sn-p 代码来执行此操作:

      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 语句

我该如何解决这个问题?我不想单独加载每个属性并执行它们。理想情况下,我只想要一个属性,以便将来添加更多删除语句

【问题讨论】:

    标签: sql groovy soapui


    【解决方案1】:

    一些 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');
    """
    

    【讨论】:

      【解决方案2】:

      难道你不能用分号将它们存储在属性文件中,然后在阅读它们后将它们删除,例如

      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);
      

      【讨论】:

      • 如果您在某些文本字段中使用分号作为数据,那将无法正常工作。
      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2023-04-01
        • 2012-06-09
        • 1970-01-01
        • 2013-10-20
        • 1970-01-01
        • 1970-01-01
        • 2014-05-23
        • 1970-01-01
        • 2020-09-27
        相关资源
        最近更新 更多