如何在 Groovy 中使用 MSSQL Select
How to use MSSQL Select in Groovy
我正在尝试从数据库访问 table。首先我检查了数据库的连接,它工作正常。然后我检查了关闭的数据库,它起作用了。在我尝试 select 来自 table 的几个项目并使用 eachraw 命令打印它们之后。
我遇到以下错误:
Wed Oct 05 07:26:01 EDT 2016:INFO:No signature of method: groovy.sql.Sql.eachrow() is applicable for argument types: (java.lang.String, Script26$_run_closure1) values: [SELECT Type,Description FROM A.dbo.Type, ...]
Possible solutions: eachRow(java.lang.String, groovy.lang.Closure), eachRow(groovy.lang.GString, groovy.lang.Closure), eachRow(java.lang.String, groovy.lang.Closure, groovy.lang.Closure), eachRow(java.lang.String, java.util.List, groovy.lang.Closure), eachRow(java.lang.String, java.util.Map, groovy.lang.Closure), eachRow(java.util.Map, java.lang.String, groovy.lang.Closure)
这是我的代码:
import groovy.sql.Sql
try{
def dbURL="jdbc:sqlserver://1.1.2.1:1433;databaseName=A"
def dbUsername="sa"
def dbPassword="password"
def dbDriver="com.microsoft.sqlserver.jdbc.SQLServerDriver"
def db = Sql.newInstance(dbURL,dbUsername,dbPassword,dbDriver)
def q1 = "SELECT Type,Description FROM A.dbo.Type"
db.eachrow(q1){row ->
log.info "${it.toString().Description}"
}
}catch (Exception e){
log.info "Some db error"
log.info e.getMessage()
}finally{
db.close()
}
方法是eachRow,没有eachrow,如果你在闭包内指定行变量名,你必须使用'row'而不是'it'。
所以你的代码应该是这样的:
db.eachRow(q1){row ->
log.info "${row.description}"
}
我正在尝试从数据库访问 table。首先我检查了数据库的连接,它工作正常。然后我检查了关闭的数据库,它起作用了。在我尝试 select 来自 table 的几个项目并使用 eachraw 命令打印它们之后。
我遇到以下错误:
Wed Oct 05 07:26:01 EDT 2016:INFO:No signature of method: groovy.sql.Sql.eachrow() is applicable for argument types: (java.lang.String, Script26$_run_closure1) values: [SELECT Type,Description FROM A.dbo.Type, ...]
Possible solutions: eachRow(java.lang.String, groovy.lang.Closure), eachRow(groovy.lang.GString, groovy.lang.Closure), eachRow(java.lang.String, groovy.lang.Closure, groovy.lang.Closure), eachRow(java.lang.String, java.util.List, groovy.lang.Closure), eachRow(java.lang.String, java.util.Map, groovy.lang.Closure), eachRow(java.util.Map, java.lang.String, groovy.lang.Closure)
这是我的代码:
import groovy.sql.Sql
try{
def dbURL="jdbc:sqlserver://1.1.2.1:1433;databaseName=A"
def dbUsername="sa"
def dbPassword="password"
def dbDriver="com.microsoft.sqlserver.jdbc.SQLServerDriver"
def db = Sql.newInstance(dbURL,dbUsername,dbPassword,dbDriver)
def q1 = "SELECT Type,Description FROM A.dbo.Type"
db.eachrow(q1){row ->
log.info "${it.toString().Description}"
}
}catch (Exception e){
log.info "Some db error"
log.info e.getMessage()
}finally{
db.close()
}
方法是eachRow,没有eachrow,如果你在闭包内指定行变量名,你必须使用'row'而不是'it'。 所以你的代码应该是这样的:
db.eachRow(q1){row ->
log.info "${row.description}"
}