版权声明:本文为博主原创文章,未经博主允许不得转载。
上篇博客写了关于重构代码用到的sqlHelper类,这个类包括四种函数,根据是否含参和是否有返回值各分两种。在这里写写传参过程用到的sqlParameter。
如果我们使用如下拼接sql字符串的方式进行数据库操作存在脚本注入的危险:
为了防止sql注入,我们采用参数化查询的方式。执行带参数的sql增删改语句或存储过程的函数如下:
copy
''' <summary>
''' 执行带参数的sql增删改语句或存储过程
''' </summary>
''' <param name="cmdtext">增删改语句或存储过程</param>
''' <param name="cmdtype">命令类型文本或存储过程</param>
''' <param name="paras">参数数组</param>
''' <returns>受影响的行数</returns>
''' <remarks></remarks>
Public Function ExecuteNonQueryCan(ByVal cmdtext As String, ByVal cmdtype As CommandType, ByVal paras As SqlParameter()) As Integer
Dim conn = GetConn()
Dim cmd As SqlCommand = New SqlCommand(cmdtext, conn)
Dim res As Integer
cmd.CommandType = cmdtype
cmd.Parameters.AddRange(paras)
Try
res = cmd.ExecuteNonQuery()
Catch ex As Exception
MsgBox(ex.Message, , "数据库操作")
Finally
If conn.State = ConnectionState.Open Then
conn.Close()
End If
End Try
Return res
End Function
在这里定义了cmdtext(以sql语句为例)、cmdtype和paras,在DAL层调用sqlhelper时,只需传入相应的参数即可。其中,paras参数部分构成如下:
说到底还是封装的思想,我们将可能输入有误的地方以参数的形式固定下来,通过传参很好的解决了这个问题。
-
顶
- 3
-
踩
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。