sql - 如何读取 groovy-sql 语句中的每一行?
问题描述
我正在尝试读取具有五行和五列的表格。我使用 sql.eachRow 函数读取 eachRow 并将值分配给字符串。我收到一个错误“Groovy:[静态类型检查] - 没有这样的属性:类的 MachineName:java.lang.Object”
我的代码:
sql.eachRow('select * from [MACHINES] WHERE UpdateTime > :lastTimeRead, [lastTimeRead: Long.parseLong(lastTimeRead)])
{ row ->
def read = row.MachineName
}
但 MachineName 是我的列名。我该如何克服这个错误。
解决方案
无法将动态属性与静态类型检查一起使用*。
但是,eachRow
会将 aGroovyResultSet
作为第一个参数传递给Closure
. 这意味着它row
具有类型GroovyResultSet
,因此您可以使用getAt
row.getAt('MachineName')
应该管用。在 groovy 中,您还可以使用[]
-operator:
row['MachineName']
这相当于第一个解决方案。
*) 没有类型检查扩展。
推荐阅读
- javascript - 将主页设置为不在选项卡中的屏幕。蜡V2
- python - conn.set_listener() 中的第一个参数是做什么用的?
- java - 将数据保存在 .txt 文件 java
- java - 我正在编写一个将两个数组一起比较的程序,但我无法将数组与空元素进行比较
- mysql - 如何让我的机器人向人们发送消息,告诉他们余额?
- excel - 在使用 Excel VBA 发送的电子邮件中内联附加图像
- swift - 删除 isLeapMonth: false
- c++ - 在类/对象中存储日期和时间的最佳做法是什么?
- hive - 在 Hive 中使用 Unix 秒的 7 天滚动平均值
- c++ - 类模板中静态变量模板的部分特化