2010-03-19 116 views
2

我目前正在做一个前端显示我公司的软件审计许可证信息,但即时通讯没有专业人士与SQL或asp.net所以四跑进了一点麻烦。我试图获得多行许可的总和,因此我可以把它放在一个文本框中,但是我得到错误“必须声明标量变量”@softwareID“。c#asp.net问题'必须声明标量变量'

SqlConnection con1 = Connect.GetSQLConnection(); 
     string dataEntry = softwareInputTxt.Text; 
     string result; 

     dataEntry = dataEntry + "%"; 
con1.Open(); 
     SqlCommand Mycmd1; 
     Mycmd1 = new SqlCommand("select sum(license_quantity_owned) from licenses where software_ID like @softwareID", con1); 
     MyCmd.Parameters.AddWithValue("@softwareID", dataEntry); 
     result = (string)Mycmd1.ExecuteScalar(); 
     licenseOwnedTxt.Text = result; 

任何人都可以指向正确的方向吗?

回答

4

d'oh!找到它了:

Mycmd1 ... 
MyCmd ... 

两个不同的命令!

你想:

Mycmd1.Parameters.AddWithValue("@softwareID", dataEntry); 

(或指定MyCmdMycmd1是一回事)


我认为它可能已经是默认的,但你可以尝试设置.CommandType到明确地说明了CommandType.Text。另外请注意,AddWithValue可能会导致比创建更多的查询计划;我会明确地创建一个已知大小的变量(列的大小加上%的备用)。现有的字符串concat应该已经确保它不是null(这通常是问题)。

此外,注意,这两个SqlConnectionSqlCommandIDisposable - 既可以在using被包裹在这里。

+0

哎呀,什么是一个明显的错误,但没有人包括我发现它哈哈,theres其他命令我没有打扰复制粘贴在这里......现在工作正常谢谢 – Verian 2010-03-22 08:51:46