2013-12-24 4 views
2

Я использую драйвер JDBC sourceforge для базы данных MS SQL, чтобы читать данные, а затем обрабатывать их.Получение странных данных через драйвер JDBC

Это, как данные, считываемые выглядит следующим образом:

def calculateHashedMessages() { 
log.info('CalculatedHashedMessages') 
def hashedMessages = [:] 
def digestCalculator = MessageDigest.getInstance("SHA-1") 

db.eachRow(""" 
      select top 1000 phone, text, id 
      from proxyTable 
      where dlr_description is null 
      and processed_at is null 
      and hashed is null 
      """) { row -> 
    hashedMessages[row['id']] = calculateHashForRow(row, digestCalculator) 
} 

hashedMessages 
} 

А потом телефон и текст обрабатывается следующим образом:

def calculateHashForRow(row, digestCalculator) { 
log.info('calculateHashForRow') 
log.info("PHONE: ${row['phone']} || TEXT ${row['text']}") 

def phone = row['phone'] 
def text = row['text'] 

def token = "${phone}_${text}" 
log.info("${token}") 
    digestCalculator.update(token.getBytes()) 
//(digestCalculator.digest()).toString() 
new BigInteger(1, digestCalculator.digest()).toString(16).padLeft(40, '0') 

}

Но это не работает и я выяснил, что для расчета методаHashForRow направляется следующее:

ТЕЛЕФОН: [email protected]

ТЕКСТ: [email protected]

Может кто-нибудь сказать мне, почему это будет содержаться в строке ['phone'] и строка ['text'] вместо значений, вставленных в базу данных?

P.S. этот код не полностью написан мной, и он фактически работает на разных машинах (с одинаковыми настройками), поэтому я немного смущен, почему он здесь не работает.

ответ

2

Попробуйте

log.info("PHONE: ${row['phone'].characterStream.text} || TEXT ${row['text'].characterStream.text}")