【发布时间】:2019-01-31 21:38:39
【问题描述】:
Select cod,nom from tb_user where cod > @param0 order by @param1
Dim mycod = 3
Dim myorderby = "asc"
Dim _adapter = New SqlDataAdapter
cmd.CommandTimeout = timeout
cmd.Connection = _conn
cmd.CommandText = pSql
cmd.CommandType = CommandType.Text
Dim sqlParameter0 = New SqlParameter("@param0", mycod)
cmd.Parameters.Add(sqlParameter0)
Dim sqlParameter1 = New SqlParameter("@param1", myorderby)
cmd.Parameters.Add(sqlParameter1)
_adapter.SelectCommand = cmd
_adapter.Fill(_ds, "result")
我知道我必须用我的变量 mycod 的值替换 @param0 以确保安全。 这在 param0 之类的变量中是可能的,但是我将 asc 放入的@param1 给了我以下错误:
the SELECT item identified by the ORDER BY number 1 contains a variable as part of the expression identitying a column position
PS:通过错误很明显SqlParameter不是输入这种顺序的方式。有没有办法安全输入这种查询?
【问题讨论】:
-
为什么不做这个排序客户端?
-
不好,但现在练习整个系统在客户端使用排序......
-
我猜你允许用户订购结果?为什么订购客户端是不好的做法?
-
没有具体的reson todo,只是我当时做的设计......用户可以选择orderby asc或orderby a column......只是因为它可以更容易管理sql跨度>
标签: sql sql-server vb.net