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 – 如何验证列表中的单个项目
推荐文章
站长推荐
热点阅读
