البرامج النصية Soapui & Groovy ، تنفذ عبارات SQL متعددة في واحدة

StackOverflow https://stackoverflow.com/questions/3024490

  •  26-09-2019
  •  | 
  •  

سؤال

لقد تلقيت بعض اختبارات Soapui ، التي تستخدم البرامج النصية الرائعة لإدراج بعض البيانات أولاً في جدول

في السابق ، كنت أستخدم مقتطف الكود التالي للقيام بذلك:

      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 بيان

كيف يمكنني الالتفاف حول هذا؟ لا أريد تحميل كل خاصية بشكل منفصل وتنفيذها. من الناحية المثالية ، أريد فقط خاصية واحدة ، حتى أتمكن من إضافة المزيد من العبارات الحذف في المستقبل

هل كانت مفيدة؟

المحلول

لا يمكنك تخزينها فقط في ملف الخصائص مع Semicolons ، ثم إزالتها بعد قراءتها ، على سبيل المثال

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

نصائح أخرى

تدعم بعض برامج تشغيل JDBC عبارات متعددة وستتوفر هذه الوظيفة من خلال فئة SQL من Groovy ، على سبيل المثال مع 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');
"""

في بعض الأحيان هذا ليس جيدًا بما فيه الكفاية. تحقق من الحل: تشغيل عبارات SQL متعددة من Groovy

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top