Domanda

Ho delle prove SoapUI, che gli script di uso groove per primo inserimento di alcuni dati in una tabella

In precedenza, sono stato utilizzando il seguente frammento di codice per fare questo:

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

Questo funziona bene, ma ho molti script di test che oggi fanno un simile (se non lo stesso) istruzioni SQL, quindi sto cercando di avvicinarsi a questo caricandolo da un file proprietà, quindi la mia istruzione SQL reale è solo in un unico luogo, per facilitare l'editing

Tuttavia, la mia istruzione SQL che sto cercando di utilizzo è in realtà 2 inserti (o cancella), quindi la proprietà di essere caricato in è:

DELETE * FROM TABLE_A; DELETE * FROM TABLE_B;

conn.execute() non può gestire la ;, il che significa che ho potuto usare solo la prima istruzione DELETE

Come posso ottenere intorno a questo? Io non voglio avere a caricare ogni proprietà separatamente ed eseguirli. Idealmente voglio solo una proprietà, in modo da poter aggiungere ulteriori istruzioni DELETE in futuro

È stato utile?

Soluzione

Non potrebbe semplicemente memorizzarli nel file delle proprietà con il punto e virgola, quindi rimuoverli dopo averli letti, per es.

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

Altri suggerimenti

Alcuni driver JDBC supportano più istruzioni e questa funzionalità saranno poi disponibili tramite classe Sql di Groovy, per esempio con 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');
"""

A volte che non è abbastanza buono. Scopri la mia soluzione: esecuzione di più istruzioni SQL da Groovy

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top