asp.net – .Net ADO连接类
发布时间:2020-12-16 09:44:52 所属栏目:asp.Net 来源:网络整理
导读:我创建了一个连接类,它应该将数据表/ datareaders等返回到我的网页.我担心使用这个类不会正确关闭连接.这是班级: Imports Microsoft.VisualBasicNamespace myConnection Public Class DB Public Shared Function GetConnStr() Return "server=foobar" End F
我创建了一个连接类,它应该将数据表/ datareaders等返回到我的网页.我担心使用这个类不会正确关闭连接.这是班级:
Imports Microsoft.VisualBasic Namespace myConnection Public Class DB Public Shared Function GetConnStr() Return "server=foobar" End Function Public Shared Function OpenConn() Return New System.Data.SqlClient.SqlConnection( GetConnStr ) End Function Public Shared Function OpenReader(SQL As String) Dim conn conn = OpenConn conn.Open Return New System.Data.SqlClient.SqlCommand(SQL,conn).ExecuteReader(System.Data.CommandBehavior.CloseConnection) End Function Public Shared Function OpenTable(SQL As String) Dim conn conn = OpenConn conn.Open Dim dr As System.Data.SqlClient.SqlDataReader = New System.Data.SqlClient.SqlCommand(SQL,conn).ExecuteReader(System.Data.CommandBehavior.CloseConnection) Dim dt As System.Data.DataTable = New System.Data.DataTable() dt.Load(dr) Return dt End Function Public Shared Function ExecuteSQL(SQL As String) Dim conn conn = OpenConn conn.Open Return New System.Data.SqlClient.SqlCommand(SQL,conn).ExecuteNonQuery() End Function End Class End Namespace 以下是我使用它的方式: rst = conn.OpenReader(SQL) While rst.Read end while rst.close 我担心一旦我投入生产,连接将无法正常关闭,我的网站将失败.我是.net的新手,这个班级背后的校长有什么不对吗? 解决方法
你是对的:你的连接不会以这种方式关闭.更糟糕的是,通过只为您的sqlcommand接受字符串,您可以打开自己的sql注入安全漏洞.作为更好的模式的一个例子,我用来填充数据表的代码看起来更像这样:
Public Function GetDataTable(ByVal sql As String,ByVal AddParameters As Action(Of SqlParameterCollection)) As DataTable Dim result As New DataTable() Using cn As SqlConnection = OpenConn(),_ cmd As New SqlCommand(sql,cn) AddParameters(cmd.Parameters) Using rdr As SqlDataReader = cmd.ExecuteReader result.Load(rdr) End Using End Using Return result End Function 然后我会调用这样的代码: Dim data As DataTable = GetDataTable("SELECT * FROM SomeTable WHERE ID= @ID",_ Sub(p) p.Add("@ID",SqlDbType.Int).Value = 12345 End Sub ) 对于SqlDataReader,我在C#中有类似的代码,但是它需要使用迭代器块,并且该功能不适用于几周前用于Visual Studio 2010和Async CTP的服务包仅为just added to VB.Net.这里要带走的重要一点是我使用Using块正确封装了sql连接,代码鼓励正确使用查询参数. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net – Http状态代码413
- 在ASP.NET MVC Web API服务和MVC客户端体系结构中实现身份验
- asp.net-mvc – 如何使用jquery处理JSON?
- asp.net-mvc – Unity无法解析依赖关系
- asp.net – 在文件夹及其子文件夹上创建缓存依赖性
- asp.net-mvc – 遵循视图模型模式的最佳实践
- asp.net – 在集线器上下文之外的SignalR集线器中调用Calle
- asp.net – SQL使用逗号分隔值和IN子句
- asp.net-mvc-3 – 如何在页面提交ASP.Net MVC时捕获哪个单选
- asp.net-mvc-3 – 如何验证列表中的单个项目
推荐文章
站长推荐
热点阅读