sql-server - 通过 JDBC 驱动程序获取奇怪的数据

标签 sql-server groovy sourceforge

我正在使用 MS SQL 数据库的 sourceforge 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')

}

但这不起作用,通过记录我发现以下内容被转发到calculateHashForRow方法:

电话:net.sourceforge.jtds.jdbc.ClobImpl@27d3bfc1

文本:net.sourceforge.jtds.jdbc.ClobImpl@3ed22c54

谁能告诉我为什么它会包含在row['phone']row['text']中,而不是插入到数据库中的值?

附注这段代码并不完全是我写的,它实际上可以在不同的机器上运行(具有相同的设置),所以我有点困惑为什么它在这里不起作用。

最佳答案

尝试

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

关于sql-server - 通过 JDBC 驱动程序获取奇怪的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20761115/

相关文章:

git - 如何从 SourceForge 获取我的 git 存储库?

google-code - 谷歌代码托管 vs Sourceforge

sql - 在 SQL 中,添加一组与连接相对应的值

groovy - Geb groovy简单设置,获取NoClassDefFoundError

sql-server - 连接字符串中未遵守超时

groovy - 如何从Gradle中的 'check'任务获取输出?

grails - 如何将 map 动态添加到列表?

web - 如何更改 SourceForge 中的项目网页?

sql - SQL中一列的默认值可以是另一列吗?

mysql - 在 MSSQL IN 子句中使用复杂键