过程或函数需要未提供的参数错误

时间:2014-10-16 18:03:24

标签: c# asp.net gridview stored-procedures

我使用通过ASP.NET Configuration Manager创建的数据库,登录后,我有一个页面,在Gridview中显示用户的客户端,但我只希望用户看到他们各自的仅限客户。

//代码:

protected void Page_Load(object sender, EventArgs e)
    {


        String strConnString = ConfigurationManager.ConnectionStrings["BA_2014ConnectionString"].ConnectionString;
        SqlConnection con = new SqlConnection(strConnString);
        SqlCommand cmd = new SqlCommand();
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.CommandText = "getClients";
        cmd.Connection = con;

            con.Open();
            gvClients.DataSource = cmd.ExecuteReader();
            gvClients.DataBind();

            con.Close();
            con.Dispose();

    }

//存储过程:

ALTER PROCEDURE dbo.getClients
@UserId uniqueidentifier
AS
BEGIN
    SELECT ClientId, UserId, ClientName, EmailAddress, PhoneNumber, ServicesNum FROM  Client_tb WHERE @UserId = UserId  

END

...当我删除where子句时,gridview显示所有客户端。但是当where子句到位时,我收到错误:"过程或函数' getClients'期望参数' @ UserId',这是未提供的。"我能得到一些帮助吗?

1 个答案:

答案 0 :(得分:1)

您应该从C#代码向您的存储过程提供UserId,如下所示:

cmd.Parameters.Add("@UserId", SqlDbType.bytes).Value = txtUserId.Text;

我不确定SqlDbType.bytes因为我现在不在Visual Studio附近,但应该是这样的。