我有一个采用单个字符串参数(ID)的方法。
我想使用SqlCommand
从查询中返回DataTable
个结果。我正在尝试从查询中的数据库(Sql Server)调用表函数并传入我的ID参数。然后,此DataTable
的内容将填充一个Combobox。这是我到目前为止所拥有的......
public string populateCompanyTransSellingEntityLookUp(string BlockId)
{
string _sql = "";
SqlCommand _comm = new SqlCommand();
_comm.Parameters.AddWithValue("(@block_id", BlockId);
_comm.CommandText = "SELECT [name] FROM dbo.fnGetBlockCompanyWIList(@block_id) ORDER BY [name]; ";
_comm.Connection = _conn;
_comm.CommandTimeout = _command_timeout;
DataTable dt = new DataTable();
try
{
SqlDataReader myReader = _comm.ExecuteReader();
dt.Load(myReader);
}
catch (Exception)
{
throw;
}
Combo.DataSource = dt;
return _sql;
}
但我得到一个错误,“必须声明标量变量'@block_id'”。为什么呢?
答案 0 :(得分:4)
这里有一个额外的括号,您应该删除它:
_comm.Parameters.AddWithValue("(@block_id", BlockId);
^^^
在设置CommandText
之后,也许它不重要但是给你的参数赋值:
_comm.CommandText = "SELECT [name] FROM dbo.fnGetBlockCompanyWIList(@block_id) ORDER BY [name]; ";
_comm.Parameters.AddWithValue("@block_id", BlockId);