在Pentaho Report Designer(PRD)中,我想通过引用default.properties文件中创建的JNDI,使用Groovy脚本(或EMCAScript脚本)连接到我的数据源。因此,我将创建一个包含JNDI名称的多值列表参数,并根据参数中选择的JNDI连接到数据源。
脚本:
import groovy.sql.Sql
import javax.naming.InitialContext
import javax.sql.DataSource
class SqlClient {
InitialContext context = new InitialContext()
DataSource dataSource = context.lookup("OLTP") as DataSource
def sql = new Sql(dataSource)
sql.execute("SELECT * FROM Person.User_JNDI")
TypedTableModel model = new TypedTableModel();
while(sql.next())
model.addRow(new Object [] {rs.getString(1)});
c.close();
return model;
}
我收到以下错误: 引起:org.apache.bsf.BSFException:来自Groovy的异常:org.codehaus.groovy.control.MultipleCompilationErrorsException:startup failed: 表达式:11:意外标记:sql @第11行,第5列。 sql.execute(“SELECT * FROM Person.User_JNDI”)
此外,PRD希望脚本返回一个模型,可能与TypedtableModel类有关。
有人能给我一个Groovy脚本的例子吗?
答案 0 :(得分:0)
假设您填写了default.properties
here,您应该可以使用以下内容访问数据源:
import groovy.sql.Sql
import javax.naming.InitialContext
import javax.sql.DataSource
class SqlClient {
InitialContext context = new InitialContext()
DataSource dataSource = context.lookup("SampleData") as DataSource
def sql = new Sql(dataSource)
sql.execute '''
select * from ... '''
...
}
使用Sql实例。