【问题标题】:Must declare the scalar variable "@user_code" in parameterized query必须在参数化查询中声明标量变量“@user_code”
【发布时间】:2012-09-25 03:55:48
【问题描述】:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) 处理 Me.Load

    Dim ds As DataSet = New DataSet()
    Dim param As SqlParameter = New SqlParameter("@user_code", SqlDbType.Char, 4)
    param.Value = "0016"
    Const sqlstr As String = "select sectors.sector_code,sector_name   from user_sectors inner join sectors on user_sectors.sector_code = sectors.sector_code  where user_code = @user_code  and sectors.sector_code not in ('z')"

    Dim da As SqlDataAdapter = New SqlDataAdapter(sqlstr, _con)
    da.Fill(ds)
    ddl.DataValueField = "sector_code"
    ddl.DataTextField = "sector_name"
    ddl.DataSource = ds.Tables(0)
    ddl.DataBind()

End Sub

【问题讨论】:

  • 检查添加的代码帮助您解决问题
  • 基本上,您声明了一个SqlParameter,但您不使用它做任何事情。您需要将其添加到SqlCommand。或者只使用 EF 或其他一些 ORM。

标签: asp.net vb.net parameterized


【解决方案1】:

向dataadapter添加参数的代码

    SqlConnection conn = new SqlConnection("Data 
             Source=localhost;Database=Northwind;Integrated Security=SSPI");
  SqlCommand command = new SqlCommand("GetProducts", conn);
  command.CommandType = CommandType.StoredProcedure;
  command.Parameters.Add("@CategoryID", SqlDbType.Int).Value = 1;
  SqlDataAdapter adapter = new SqlDataAdapter(command);
  DataSet ds = new DataSet();
  adapter.Fill(ds, "Products");

像这样为你的数据适配器对象添加参数

da.Parameters.Add(param)

您的代码中缺少此内容

MSDN:Using Parameters with a DataAdapter

【讨论】:

  • 无法解析符号参数。我的问题还没有解决。
  • @AdityaPratapSingh - 检查 msdn 链接,您可以在其中找到如何将参数添加到数据适配器的示例......
猜你喜欢
  • 2021-10-15
  • 1970-01-01
  • 2010-11-08
  • 2020-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-07
  • 1970-01-01
相关资源
最近更新 更多