Jdbc BIRT报表设计器空数据集脚本

Jdbc BIRT报表设计器空数据集脚本,jdbc,firebird,birt,report-designer,jaybird,Jdbc,Firebird,Birt,Report Designer,Jaybird,我正在使用BIRT Report Designer 4.4.0,并且不断收到错误消息 org.eclipse.birt.report.engine.api.EngineeException:无法获取下一个数据行。org.eclipse.birt.report.data.oda.jdbc.jdbception:无法下移到结果集中的下一行。SQL错误1:结果集已关闭;org.firebirdsql.jdbc.FBSQLException:结果集已关闭 当BIRT试图从数据集中提取一行时,我知道该行是

我正在使用BIRT Report Designer 4.4.0,并且不断收到错误消息

org.eclipse.birt.report.engine.api.EngineeException:无法获取下一个数据行。org.eclipse.birt.report.data.oda.jdbc.jdbception:无法下移到结果集中的下一行。SQL错误1:结果集已关闭;org.firebirdsql.jdbc.FBSQLException:结果集已关闭

当BIRT试图从数据集中提取一行时,我知道该行是空的。我发现这是BIRT的一个常见问题,并试图阻止数据集上带有beforeOpen脚本的空数据集,我可能在其中出错,因为它不起作用。 我创建了一个vars[item],并想计算调用OnFetch的频率

开放前:

变量[项目]=0; OnFetch:

变量[项目]+; 关闭前:

如果变量[项目]==0 { 行[0]=0; } 这不起作用,因为我想没有行[0]

当我将数据集的queryText编辑为

从kontrolle中选择0 这肯定会产生一个数据集,我仍然得到同样的无法获取下一个数据行错误

设计大致如下:

这是有问题的数据集 第二个表仅通过一个参数绑定到第一个表,但是第三个表与第二个表有两个参数绑定

希望解释足够好,有人能提供解决方案。

如前所述,在连接属性(如JDBC url)中添加defaultResultSetTholdable=true。这指示Jaybird使用可保留的结果集创建连接,默认情况下相当于在代码中调用connection.setHoldabilityResultSet.HOLD\u CURSORS\u OVER\u COMMIT

我真的不了解伯特,所以这只不过是对原因的一个有根据的猜测:

它可以在不显式询问或检查结果集的情况下期望可保持的结果集,并且在Jaybird中打开结果集后提交默认情况下,结果集在提交时关闭 BIRT可以使用autoCommit=true作为默认值,但不希望在同一连接上执行另一条语句时关闭结果集。这会导致关闭像结果集这样的资源,以及JDBC标准指定的提交;在某些方面,这是第1点的特化。
您使用的是哪个Jaybird版本?我使用的是Jaybird 2.2.7如果您将DefaultResultSetTholdable=true添加到连接属性(如JDBC url中),会发生什么情况?我不知道我是否应该感到沮丧或过于高兴,因为仅仅添加它就成功了!非常感谢!不过,我删除了脚本编写的东西。好吧,我维护了Jaybird,不幸的是,很多应用程序在没有明确要求的情况下都希望得到可保存的结果集。因此,这通常会奏效。