2015-02-17 4 views
0

Внизу запрос предназначен для вставки основных данных в БД: если данные уже есть хорошо и хорошо, я не хочу вставлять их и продолжать выполнять остальные запросы.Как продолжить выполнение groovy-скрипта в пользовательском интерфейсе Soap, даже если одна вставка запроса не удалась?

import groovy.sql.Sql 


def props = [user: 'testing', password: 'testing', allowMultiQueries: 'true'] as Properties 

def url = 'jdbc:mysql://161.91.235.239:3306/cf_85329a15_7ba0_44bb_a289_4ba9be98e661' 

def driver = 'com.mysql.jdbc.Driver' 

def sql = Sql.newInstance(url, props, driver) 

sql.execute """ 

INSERT INTO `responses` (`ResponseID`,`RequestID`,`UnitSystemID`,`ResponseDateTime`,`UserID`,`UserSubscriptionID`,`ApplicationID`,`PropositionID`,`FeedDefinitionID`,`ObservationID`,`ResponseRAW`) VALUES (100000,0,1,'2015-01-13 07:48:00',1584,1,1,3,1,100008,'test'); 

INSERT INTO `responses` (`ResponseID`,`RequestID`,`UnitSystemID`,`ResponseDateTime`,`UserID`,`UserSubscriptionID`,`ApplicationID`,`PropositionID`,`FeedDefinitionID`,`ObservationID`,`ResponseRAW`) VALUES (100001,0,1,'2015-01-13 07:48:00',1584,1,1,3,1,500001,'test'); 

INSERT INTO `responses` (`ResponseID`,`RequestID`,`UnitSystemID`,`ResponseDateTime`,`UserID`,`UserSubscriptionID`,`ApplicationID`,`PropositionID`,`FeedDefinitionID`,`ObservationID`,`ResponseRAW`) VALUES (100002,0,1,'2015-01-13 07:48:00',1584,1,1,3,1,100007,'test'); 

ответ

0

Вы можете проверить, существуют ли ваши данные в таблице перед вставкой. Вы должны сделать как
что:

import java.util.arrays 
import groovy.sql.Sql 

def props = [user: 'testing', password: 'testing', allowMultiQueries: 'true'] as Properties 

def url = 'jdbc:mysql://161.91.235.239:3306/cf_85329a15_7ba0_44bb_a289_4ba9be98e661' 

def driver = 'com.mysql.jdbc.Driver' 

def sql = Sql.newInstance(url, props, driver) 
def resulSelectValues = sql.execute "select distinct(`ResponseID`) from responses" 
def tabQueryValues = { 
{100000,0,1,'2015-01-13 07:48:00',1584,1,1,3,1,100008,'test'},  
{100001,0,1,'2015-01-13 07:48:00',1584,1,1,3,1,500001,'test'}, 
{100002,0,1,'2015-01-13 07:48:00',1584,1,1,3,1,100007,'test'} 

for (i=0;i<3;i++) 
{ 
if(!Arrays.asList(resulSelectValues).contains(tabQueryValues[i,0])) 
{ 
sql.execute """ 
insert into responses` 
(`ResponseID`,`RequestID`,`UnitSystemID`,`ResponseDateTime`, 
`UserID`,`UserSubscriptionID`,`ApplicationID`,`PropositionID`, 
`FeedDefinitionID`,`ObservationID`,`ResponseRAW`) values (""" 
+tabQueryValues[i,0]+","+tabQueryValues[i,1]+","+tabQueryValues[i,2] 
+","+tabQueryValues[i,3]+","+tabQueryValues[i,4]+ 
    ","+tabQueryValues[i,5]+","+tabQueryValues[i,6]+", 
"+tabQueryValues[i,7]+","+tabQueryValues[i,8]+", 
"+tabQueryValues[i,9]+","+tabQueryValues[i,10]);" 
} 
} 
0

Рассматривали вы используете только простой try..catch?

try { 
    sql.execute """ 
} catch(SQLException ex) { 
    // data already exists, do nothing 
} 
Смежные вопросы