首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > VB Dotnet >

怎么写一个公共模块,用SqlDataReader读取数据库

2011-12-08 
如何写一个公共模块,用SqlDataReader读取数据库?以下代码运行时报错:未处理TargetInvocationException调用

如何写一个公共模块,用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

热点排行