必须声明标量变量错误

时间:2013-01-20 16:06:53

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

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

  

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

     

第75行:sdsUsers.SelectParameters.Add(“@ poNum”,poNum.Text.Trim());
  第76行:
  第77行:DataView dvMember =(DataView)sdsUsers.Select(DataSourceSelectArguments.Empty); //这里的错误
  第78行:DataTable 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();
            } 
        } 

我几天都遇到这个问题而且我找不到解决方案

2 个答案:

答案 0 :(得分:2)

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

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

或(假设poNum是一个int):

sdsUsers.SelectParameters.Add(new Parameter("poNum", System.TypeCode.Int32, poNum));
祝你好运。

答案 1 :(得分:0)

sdsUsers.SelectParameters.Clear();

应该之后

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