3

Groovyスクリプトを使用して最初にデータをテーブルに挿入するsoapUIテストがいくつかあります

以前は、これを行うために次のコード スニペットを使用していました。

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

これはうまくいきますが、似たような(同じではないにしても)SQLステートメントを実行する多くのテストスクリプトがあるため、プロパティファイルからロードすることでこれにアプローチしようとしているため、実際のSQLステートメントは1つだけです場所、編集しやすいように

ただし、使用しようとしている SQL ステートメントは実際には 2 つの挿入 (または削除) であるため、読み込まれるプロパティは次のとおりです。

DELETE * FROM TABLE_A; DELETE * FROM TABLE_B;

conn.execute()を処理できません。つまり、最初のステートメント;しか使用できませんでしたDELETE

どうすればこれを回避できますか? 各プロパティを個別にロードして実行する必要はありません。理想的には、必要なプロパティは 1 つだけなので、後でさらに削除ステートメントを追加できます。

4

3 に答える 3

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');
"""
于 2010-11-28T01:22:01.830 に答える
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);
于 2010-06-11T16:55:00.913 に答える
1

時にはそれだけでは十分ではありません。私のソリューションをチェックしてください: Groovy から複数の SQL ステートメントを実行する

于 2010-11-27T09:32:55.600 に答える