当前位置:  开发笔记 > 数据库 > 正文

vb.net循环查询结果

如何解决《vb.net循环查询结果》经验,为你挑选了1个好方法。



1> Joel Coehoor..:

我怀疑问题与您管理gconIntegration连接的方式有关.你很难继续使用同样的连接.看看它住在哪里会很有帮助.

最好从池中获得"新"连接,让.Net为您担心.

此外,您的通用"GetSQLTable"代码缺少一个重要部分:它不允许设置参数,这告诉我您将它们直接构建到查询字符串中.这是一个灾难的秘诀:它将导致Sql注入安全漏洞.

还有一件事:不要Nothing在.Net中设置对象.如果需要,可以将它们丢弃,或者让它们自行脱离范围.

这是从数据表中拉回数据表的常用方法:

Function GetSomeData(ByVal Table2ID As Integer)
    Dim result As New DataTable

    Dim sql As String = "SELECT Column1,Column2 FROM [Table1] WHERE Table2ID= @Table2ID"

    Using cn As New SqlConnection( GetConnectionString() ), _
    Using cmd As New SqlCommand(sql, cn)

        cmd.Parameters.Add("@Table2ID", SqlDbType.Int).Value = Table2ID

        Using rdr As SqlDataReader = cmd.ExecuteReader()
           result.Load(rdr)
        End Using
    End Using
    return result
End Function

关于该代码的一些注释:

Using陈述将保证相关对象被置于相应的对象End Using.

查询参数保持强类型,并且永远不会直接替换到查询字符串中,即使它们被传输到服务器也是如此.Sql Data和Sql Code从不混合.

对于需要发送的每个查询,您需要单独的函数.这确实是一件好事,因为它会为您的数据库构建一个强类型接口.理想情况下,所有这些函数都在同一个类中,而GetConnectionString函数对该类是私有的.在此数据层之外不会发生数据库访问.

推荐阅读
放ch养奶牛
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有