【发布时间】:2015-02-07 16:59:16
【问题描述】:
假设我有,例如:
Dim _id As Integer = 7
我将使用它从以 foo_id 为主键的表中选择一行。我可以将 Integer 值与 AddWithValue 绑定,例如:
Dim cmd As New SqlCommand("select * from foo where foo_id = @id", sqlconn)
cmd.Parameters.AddWithValue("@id", _id)
或者我可以将语句构造为纯字符串:
Dim cmd As New SqlCommand("select * from foo where foo_id = " & _id, sqlconn)
显然我总是,总是绑定一个字符串,但使用 Integer 键我可以说服自己使用任何一种方法。
任何人都有意见,为什么?
【问题讨论】:
-
首先为什么是因为使用参数避免了sql注入。
-
用字符串注入,是的。整数...实际上不可能,除非代码可能被损坏以将 Integer 对象转换为字符串,此时您可能会争辩说整个 SqlCommand 可能已损坏。
标签: sql sql-server vb.net coding-style