【问题标题】:How could I pass parameter to sqldataadapter?如何将参数传递给 sqldataadapter?
【发布时间】:2018-03-08 14:08:13
【问题描述】:

我试图给参数传递一个值,但它返回的是什么。如果我使用没有参数的简单 sql 命令,我可以从数据库中检索所有数据。 这是我的代码:

Public Shared Function RetrieveData() As DataTable
    Connection.Open()
    Try
        sql = "SELECT DEP_ID AS CODE, DEP_NAME AS DEPARTMENT FROM DEPART_TBL WHERE " & FieldName & " LIKE N'%@criteria%'"
        da = New SqlDataAdapter
        da.SelectCommand = New SqlCommand(sql, Connection.SQLConnection)
        da.SelectCommand.Parameters.Add("@criteria", SqlDbType.NChar)
        da.SelectCommand.Parameters("@criteria").Value = "KCL"
        'da.SelectCommand.Parameters.Add("@criteria", SqlDbType.NChar, 10, "DEP_ID")
        'Message.ShowInfo(da.SelectCommand.CommandText.ToString)
        'Exit Function
        dt = New DataTable
        da.Fill(dt)
    Catch ex As Exception
        Message.ShowError(ex.Message)
    End Try
    da.Dispose()
    Connection.Close()
    Return dt
End Function

【问题讨论】:

  • 与问题无关,但您可以在将变量添加到命令的同时为其赋值,在传递字符串参数时指定长度也是一个好主意。所以你的代码可能是 - da.SelectCommand.Parameters.Add("@criteria", SqlDbType.NChar, 50).Value = "KCL"

标签: sql vb.net sqlcommand dataadapter


【解决方案1】:

你正在搜索字符串@criteria,你要使用参数,所以使用:

sql = "SELECT DEP_ID AS CODE, DEP_NAME AS DEPARTMENT FROM DEPART_TBL WHERE " & FieldName & " LIKE N'%' + @criteria + '%'"

也可以在参数中使用:

da.SelectCommand.Parameters("@criteria").Value = "%KCL%"

【讨论】:

  • 是的,感谢您的回答。它有效,但似乎不接受空白参数。
  • 使用该参数,可能另一个来自您的 UI 并受到 SQL 注入攻击
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-10-09
  • 2012-12-21
  • 2012-01-07
  • 2014-05-03
  • 2015-06-26
  • 2012-01-18
  • 2017-07-14
相关资源
最近更新 更多