如何写一个公共模块,用SqlDataReader读取数据库?
以下代码运行时报错:未处理 TargetInvocationException
调用的目标发生了异常
请帮助解决^
'放在窗体内
Private Sub SubLoadTable()
Dim strCommandText As String
Dim stConnectionSQLString As String
Dim SqlDataReader1 As SqlDataReader
stConnectionSQLString = "略…… "
strCommandText = "略…… "
SqlDataReader1 = FunModRetunSQLDataReader1(stConnectionSQLString, strCommandText)
Do While SqlDataReader1.Read
'略……
Loop
SqlDataReader1.Close()
End Sub
'放在模块里
Public Function FunRetunSQLDataReader1(ByVal strConnectionSQLString As String, ByVal strCommandText As String) As SqlDataReader
Dim SqlConnection1 As New System.Data.SqlClient.SqlConnection
Dim SqlCommand1 As New System.Data.SqlClient.SqlCommand
Try
SqlConnection1.ConnectionString = strConnectionSQLString
SqlCommand1.Connection = SqlConnection1
SqlConnection1.Open()
SqlCommand1.CommandText = strCommandText
FunModRetunSQLDataReader1 = SqlCommand1.ExecuteReader
Catch ex As Exception
FunModRetunSQLDataReader1 = Nothing
Finally
SqlCommand1 = Nothing
SqlConnection1.Close()
SqlConnection1 = Nothing
End Try
End Function
[解决办法]
SqlDataReader1 = FunModRetunSQLDataReader1(stConnectionSQLString, strCommandText)
Do While SqlDataReader1.Read '这里结合你的函数,是错误的.
'略……
Loop
读取Reader时,得保证Connection处理连接状态,而你的早已经Close了.
[解决办法]
大概是这样.呵,为什么不习惯用Return呢.
Public Function FunRetunSQLDataReader1(ByVal strConnectionSQLString As String, ByVal strCommandText As String) As SqlDataReader
Dim SqlConnection1 As New System.Data.SqlClient.SqlConnection
Dim SqlCommand1 As New System.Data.SqlClient.SqlCommand
Try
SqlConnection1.ConnectionString = strConnectionSQLString
SqlCommand1.Connection = SqlConnection1
SqlConnection1.Open()
SqlCommand1.CommandText = strCommandText
FunModRetunSQLDataReader1 = SqlCommand1.ExecuteReader
Catch ex As Exception
FunModRetunSQLDataReader1 = Nothing
SqlCommand1 = Nothing
SqlConnection1.Close()
SqlConnection1 = Nothing
End Try
End Function