Winforms:如何使用SqlCommand使用sql函数查询数据库?

时间:2014-03-13 15:12:45

标签: c# sql sql-server winforms

我有一个采用单个字符串参数(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'”。为什么呢?

1 个答案:

答案 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);