水晶报表动态连接数据库后怎么释放连接?
Imports CrystalDecisions.CrystalReports.EngineImports CrystalDecisions.Shared
Public Class TE0048_Cry
Inherits System.Windows.Forms.Form
Public Shared sReportType As Object
Public Shared P_STRE_LOC_CD As String
Public Shared sShitOne As String
Public Shared sShitTwo As String
Public Shared sUsername As String
Dim CrtableLogoninfo As New TableLogOnInfo
Dim CrConnectionInfo As New ConnectionInfo
Dim ParamFields As New ParameterFields
Dim CrReportDocumentOne As New TE0048CRY
Private Sub TE0048_Cry_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Do_Print()
End Sub
Private Sub Do_Print()
Dim iCount As Integer
' Dim sAddr As String
'Dim CrtableLogoninfos As New TableLogOnInfos
' Dim CrtableLogoninfo As New TableLogOnInfo
' Dim CrConnectionInfo As New ConnectionInfo
Dim CrTables As Tables
Dim CrTable As Table
Dim ParamField As ParameterField
' Dim ParamFields As New ParameterFields
Dim DiscreteVal As ParameterDiscreteValue
' Dim CrReportDocumentOne As New TE0048CRY
'Dim CrReportDocumentTwo As New BilletTwo
'If sReportType = "1" Then
' CrReportDocumentTwo = Nothing
'Else
' CrReportDocumentOne = Nothing
'End If
Try
With CrConnectionInfo
.ServerName = "CSGMES"
'If you are connecting to Oracle there is no
'DatabaseName. Use an empty string.
'For example, .DatabaseName = ""
.DatabaseName = ""
.UserID = "PROD00"
.Password = "PROD00"
End With
ParamField = New ParameterField
ParamField.ParameterFieldName = "P_STRE_LOC_CD"
DiscreteVal = New ParameterDiscreteValue
DiscreteVal.Value = P_STRE_LOC_CD
ParamField.CurrentValues.Add(DiscreteVal)
ParamFields.Add(ParamField)
ParamField = New ParameterField
ParamField.ParameterFieldName = "UserName"
DiscreteVal = New ParameterDiscreteValue
DiscreteVal.Value = GeneralCommon.sUsername
ParamField.CurrentValues.Add(DiscreteVal)
ParamFields.Add(ParamField)
ParamField = New ParameterField
ParamField.ParameterFieldName = "ShitOne"
DiscreteVal = New ParameterDiscreteValue
DiscreteVal.Value = sShitOne
ParamField.CurrentValues.Add(DiscreteVal)
ParamFields.Add(ParamField)
ParamField = New ParameterField
ParamField.ParameterFieldName = "ShitTwo"
DiscreteVal = New ParameterDiscreteValue
DiscreteVal.Value = sShitTwo
ParamField.CurrentValues.Add(DiscreteVal)
ParamFields.Add(ParamField)
CRYViewer1.ParameterFieldInfo = ParamFields
'If sReportType = "1" Then
CrTables = CrReportDocumentOne.Database.Tables
'ElseIf sReportType = "2" Then
' CrTables = CrReportDocumentTwo.Database.Tables
'End If
For Each CrTable In CrTables
CrtableLogoninfo = CrTable.LogOnInfo
CrtableLogoninfo.ConnectionInfo = CrConnectionInfo
CrTable.ApplyLogOnInfo(CrtableLogoninfo)
Next
'If sReportType = "1" Then
CRYViewer1.ReportSource = CrReportDocumentOne
CrReportDocumentOne.Refresh()
'ElseIf sReportType = "2" Then
' CRYViewer1.ReportSource = CrReportDocumentTwo
'End If
'CrConnectionInfo = Nothing
Catch ex As Exception
GeneralCommon.Gp_MsgBoxDisplay(ex.Message)
End Try
End Sub
Private Sub TE0048_Cry_Closed(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Closed
'CrConnectionInfo = Nothing
'ParamFields = Nothing
'CrReportDocumentOne.Close()
CrReportDocumentOne.Dispose()
CRYViewer1.ReportSource = Nothing
CRYViewer1 = Nothing
'CrReportDocumentOne = Nothing
'Application.Exit()
Me.Dispose()
End Sub
End Class
怎么释放报表或这个连接啊?关键是这里不会啊
我都把这个窗口关闭了,但是那个连接还在呢
我是这个窗口里面一放一个CRYViewer1控件 CrystalDecisions.Windows.Forms.CrystalReporViewer,CRYViewer1.ReportSource 等于我那个报表,这个报表是连接到后台一个过程的
--------------------编程问答-------------------- Private Sub TE0048_Cry_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
。。。。。。。。。
没有关闭数据连接
'CrConnectionInfo = Nothing
Private Sub TE0048_Cry_Closed(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Closed
'CrConnectionInfo = Nothing
'ParamFields = Nothing
'CrReportDocumentOne.Close()
CrReportDocumentOne.Dispose()
CRYViewer1.ReportSource = Nothing
CRYViewer1 = Nothing
'CrReportDocumentOne = Nothing
'Application.Exit()
Me.Dispose()
End Sub
End Class
怎么不使用,ME.CLOSE()
或者 把你所有的调用都弄个释放; --------------------编程问答-------------------- Private Sub TE0048_Cry_Closed(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Closed
'CrConnectionInfo = Nothing
'ParamFields = Nothing
'CrReportDocumentOne.Close()
CrReportDocumentOne.Dispose()
CRYViewer1.ReportSource = Nothing
CRYViewer1 = Nothing
'CrReportDocumentOne = Nothing
'Application.Exit()
'Me.Close()
Me.Dispose()
End Sub
上面注释的我都试了,还是没给我释放连接,请问有什么好方法吗?
如果只开一个连接到数据库,数据库会自动回收,多于2个就不能回收了
补充:.NET技术 , VB.NET