ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

c#-过程或函数“”期望参数“”未提供

2019-11-21 08:08:56  阅读:279  来源: 互联网

标签:sql c sql-server stored-procedures


这个问题已经在这里有了答案:            >            Procedure expects parameter which was not supplied                                    10个
我很烦人的似乎是一个非常“受欢迎”的错误.但是,就我而言,我正在提供期望的参数,并且它肯定有一个值,所以我很困惑.这是我的代码:

public static DataTable MyDataTable(string pd, bool showAll)
{
    DataTable results = new DataTable("PD results");

    string Conn = ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString;

    using (SqlConnection connection = new SqlConnection(Conn))
    {
        SqlCommand cmd = new SqlCommand("dbo.MyProcedure", connection);

        SqlParameter pdParam = new SqlParameter("@i_user", SqlDbType.VarChar);
        pdParam.Value = pd;
        cmd.Parameters.Add(pdParam);

        if (showAll) 
            cmd.Parameters.AddWithValue("@i_ShowALL", (int)1);
        else 
            cmd.Parameters.AddWithValue("@i_ShowALL", (int)0);

        SqlDataAdapter da = new SqlDataAdapter(cmd);

        try
        {
            da.Fill(results);
        }
        catch (Exception ex) 
        {
            string error = ex.Message;
        }
     }

     return results;
}

我已经遍历了代码,并且错误发生在参数@i_user上.但是,当我添加参数时,它具有一个值,并且在查看SqlDataAdapter>时已确认此值.选择命令>参数>非公共成员>项> [0] {@i_user}>基地>值.

尽管参数提供了varchar值,但还是出现了错误

Procedure or function ‘dbo.MyProcedure’ expects parameter ‘@i_user’ which is not supplied

我究竟做错了什么?

解决方法:

错误的原因是SqlCommand类需要纯文本SQL.
分配存储过程名称(在您的情况下为“ dbo.MyProcedure”)时,请添加

  ... 
  // Do not forget to Dispose IDisposable instances
  using (SqlCommand cmd = new SqlCommand("dbo.MyProcedure", connection)) {
    // cmd.CommandText is a stored procedure name, not a plain text SQL 
    cmd.CommandType = CommandType.StoredProcedure;
     ...
  }

标签:sql,c,sql-server,stored-procedures
来源: https://codeday.me/bug/20191121/2050425.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有