【问题标题】:Must declare scalar variable error必须声明标量变量错误
【发布时间】:2013-01-20 16:06:53
【问题描述】:

我正在尝试从代码隐藏中显示 sql 选择结果,但是发生了这个错误:

必须声明标量变量“@poNum”。

第 75 行:sdsUsers.SelectParameters.Add("@poNum", poNum.Text.Trim());
第 76 行:
第 77 行:DataView dvMember = (DataView)sdsUsers.Select(DataSourceSelectArguments.Empty); //这里是错误
第 78 行:数据表 tblMember = dvMember.Table;

代码:

string connectionString2 = ConfigurationManager.ConnectionStrings["WholesaleConnectionString"].ConnectionString;
string selectSql = "SELECT invoiceNum, poNum FROM SendInvoice where poNum = @poNum";

SqlDataSource sdsUsers = new SqlDataSource(connectionString2, selectSql); 
sdsUsers.SelectParameters.Clear(); 
sdsUsers.SelectParameters.Add("@poNum", poNum.Text.Trim());

DataView dvMember = (DataView)sdsUsers.Select(DataSourceSelectArguments.Empty); //error occured here 
DataTable tblMember = dvMember.Table;

for(int i=0;i<tblMember.Rows.Count;i++) { 
            if (i==0){ 
             Label aaa = new Label();
             aaa.Text = tblMember.Rows[i].ItemArray[0].ToString();
            } 
        } 

我被这个问题困扰了好几天,我找不到解决办法

【问题讨论】:

  • 考虑使用 ADO.NET SqlDataAdapter 类而不是 ASP.NET SqlDataSource 控件进行基本数据检索。
  • 请尝试将 sdsUsers.SelectParameters.Add("@poNum", poNum.Text.Trim()); 更改为 sdsUsers.SelectParameters.AddWithValue("@poNum", poNum.Text.Trim());
  • 我在 SQL Select 语句和 SelectParameters.Add() 中也有 at @ 符号。它只需要在后面。

标签: c# sql sql-server ado.net


【解决方案1】:

我会尝试从参数名称中删除 @(尽管将其保留在您的 SQL 中):

sdsUsers.SelectParameters.Add("poNum", poNum.Text.Trim());

或(假设 poNum 是一个 int):

sdsUsers.SelectParameters.Add(new Parameter("poNum", System.TypeCode.Int32, poNum));

祝你好运。

【讨论】:

    【解决方案2】:
    sdsUsers.SelectParameters.Clear();
    

    应该在之后

    sdsUsers.SelectParameters.Add("@poNum", poNum.Text.Trim());
    

    【讨论】:

    • 你的意思是Clear()应该在Add()之后?这没有任何意义。
    猜你喜欢
    • 2014-08-06
    • 2017-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多