关闭CrystalDecisions.CrystalReports.Engine连接。

2020-08-17 17:23发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我们有一个使用CrystalDecisions.CrystalReports.Engine的可执行文件。
定义适当的表属性后,我们调用ApplyLogin方法,该方法成功创建并与数据库建立ODBC连接。
但是,只要我们的应用程序正在运行,与数据库的连接仍保持打开状态,我们就可以在数据库侧看到它。
我们只能看到三种公共方法:
1。 ApplyLogonInfo
2。 SetDataSource
3。 TestConnectivity

问题:如果不关闭我们的应用程序,我们如何关闭所建立的连接?

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我们有一个使用CrystalDecisions.CrystalReports.Engine的可执行文件。
定义适当的表属性后,我们调用ApplyLogin方法,该方法成功创建并与数据库建立ODBC连接。
但是,只要我们的应用程序正在运行,与数据库的连接仍保持打开状态,我们就可以在数据库侧看到它。
我们只能看到三种公共方法:
1。 ApplyLogonInfo
2。 SetDataSource
3。 TestConnectivity

问题:如果不关闭我们的应用程序,我们如何关闭所建立的连接?

付费偷看设置
发送
3条回答
悠然的二货
1楼 · 2020-08-17 17:53.采纳回答

要添加到Dell的回复中,当您关闭报告时,引擎将关闭连接。

请注意,尽管大多数DB Server现在都使用连接池,所以它可能会使连接保持打开状态。 CR无法控制该功能。 请查看您的数据库管理指南,以了解如何关闭连接池(如果他们允许的话)。

能不能别闹
2楼-- · 2020-08-17 18:05

假设您使用的是.NET SDK,内部是 基于一些COM组件。 .NET不能很好地管理COM。 若要解决此问题,您需要在调用.Close()之后显式.Dispose()ReportDocument对象。 有两种方法可以做到这一点。

一种方法是将ReportDocument包含在" using"子句中,如下所示:

 using(ReportDocument myRpt = new ReportDocument()
 {
  //用报告做事
   myRpt.close();
 } 

程序将在using子句的结尾自动在myRpt上调用.Dispose()。

另一种方法是显式调用

 myRpt.Close();
 myRpt.Dispose(); 

,当您完成ReportDocument时。

-Dell

Alawn_Xu
3楼-- · 2020-08-17 18:10

感谢您的回复。 我们在系统的其他部分使用Close/Dispose,我们还将在编译报告时研究是否适用。

一周热门 更多>