2013-01-20 80 views
1

我想显示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(); 
      } 
     } 

我坚持这个问题好几天,我无法找到一个解决办法

+0

考虑使用ADO.NET ['SqlDataAdapter'](http://msdn.microsoft.com/zh-cn/library/system.data.sqlclient.sqldataadapter.aspx)类而不是ASP.NET'SqlDataSource控制基本数据检索。 –

+0

请尝试更改此sdsUsers.SelectParameters.Add(“@ poNum”,poNum.Text.Trim());'这个'sdsUsers.SelectParameters.AddWithValue(“@ poNum”,poNum.Text.Trim()); ' –

+0

我还在SQL Select语句和SelectParameters.Add()中都有at @符号。它只需要在后面。 – 404

回答

2

我会尝试从paramater名字去掉@(在离开它你SQL虽然):

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

或(假设poNum是int):

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

祝你好运。