c#调用存储过程,提供了参数老是提示“没有提供该参数”

我提供的某些参数为null

直接在数据库里面运行存储过程没有问题

 

vs调试时也是有参数的,只是有些参数值为 null 时有问题; 值不为null时,就没有问题。

 

 

后来,自己摸索、百度了几个小时没有找到解决方案

 

后来,我就从null和DBNull入手,在参数赋值前判断了一下,运行才没有问题,在参数赋给command时,要判断一下

解决方案:

            if (parameters != null)
            {
                foreach (SqlParameter parameter in parameters)
                {
                    if (parameter != null)
                    {
                        if (((parameter.Direction == ParameterDirection.InputOutput) || (parameter.Direction == ParameterDirection.Input)) && (parameter.Value == null))
                        {
                            parameter.Value = DBNull.Value;
                        }
                        command.Parameters.Add(parameter);
                    }
                }
            }

 

就是为空时,赋值: parameter.Value = DBNull.Value;

 

就样就解决了。。一个下午时间就这样过去了。。

时间: 2024-09-16 03:17:09

c#调用存储过程,提供了参数老是提示“没有提供该参数”的相关文章

使用EF调用存储过程查询数据列表并返回输出参数

问题描述 代码如下JRQEntitiesjrq=newJRQEntities();varobj=jrq.Database.SqlQuery<SMSTemplate>("select*fromSMSTemplateSetwhereId=@Id",newSqlParameter{ParameterName="Id",Value=1});if(obj.Count()>0){vara=obj.ToList();}这样传参数会报:如果使用string.For

调用存储过程时注意要使用output做修饰符

调用存储过程时的注意事项:假如有输出参数,注意要使用output做修饰符. 示例如下: alter proc ABC ( @OutValue nvarchar(20) output ) as set @OutValue='aabbcc' select a,b from ab print @OutValue alter proc ABCV as Declare @OutValuea nvarchar(20) Exec ABC @OutValue=@OutValuea output select @

myBatis3.x 如何调用 存储过程?

问题描述 myBatis 映射 xml 文件里 好像好像 没有 类似于 ibatis 2.x 中 <procedure>的标签 来支持 存储过程请问 使用 myBatis 3.x 应该怎么 实现 对存储过程的 调用?? 解决方案 <!-- 调用存储过程 --><select id="getAllUser" statementType="CALLABLE">{call getAllUser(#{userList,<!-- 参数

调用存储过程怎么老是说没有参数

问题描述 错误提示:过程'rwADD'需要参数'@check_content',但未提供该参数.但是我看了多边里面没有错误,有那位兄弟给找下问题.ALTERPROCEDUREdbo.rwADD@check_contenttext,@rw_checkfloat,@rw_aint,@rw_bint,@rw_cint,@rw_dint,@check_yearvarchar(50),@check_namenvarchar(100),@check_jdvarchar(50),@rw_namenvarcha

SQL SERVER使用ODBC 驱动建立的链接服务器调用存储过程时参数不能为NULL值

   我们知道SQL SERVER建立链接服务器(Linked Server)可以选择的驱动程序非常多,最近发现使用ODBC 的 Microsoft OLE DB 驱动程序建立的链接服务器(Linked Server), 调用存储过程过程时,参数不能为NULL值. 否则就会报下面错误提示: 对应的英文错误提示为: EXEC xxx.xxx.dbo.Usp_Test NULL,NULL,'ALL' Msg 7213, Level 16, State 1, Line 1 The attempt by

异步上传UploadFileAsync老是提示有无效参数,错在哪里

问题描述 异步上传UploadFileAsync老是提示有无效参数,错在哪里 错在哪里 ???文件明明是存在的 解决方案 第一个参数不对,应该放在new Uri()里面. 解决方案二: 第一个参数是Uri,你传递string当然错了 c.UploadFileAsync(new Uri(""http://localhost:.................."")POST"".........."")

C#中调用存储过程主要是参数使用问题

存储过程|问题 C#中调用存储过程主要是参数使用问题(输入参数,输出参数,返回值)         //现假设conn是已经定义好的连接,proc为存储过程名         //1.调用无参数无返回的存储过程        //SqlCommand cmd=new SqlCommand(proc,conn);        //cmd.CommandType=CommandType.StoredProcedure;//告知执行存储过程        //conn.Open();       

ado.net-求一个无参数 调用存储过程的方法,我调用的是列转行的存储过程 但是访问数据库的方法不知道怎么写

问题描述 求一个无参数 调用存储过程的方法,我调用的是列转行的存储过程 但是访问数据库的方法不知道怎么写 访问数据不知道写 存储过程已经写好 解决方案 prepareCall()方法调用存储过程 解决方案二: use 数据库名称 这不是方法 解决方案三: use 数据库名称 用这个语句就能指向数据库 解决方案四: exec 存储过程名称

关于ASP.NET 调用存储过程传参数的问题

问题描述 关于ASP.NET 调用存储过程传参数的问题 /// /// 执行存储过程 /// /// 存储过程名 /// 存储过程参数 /// SqlDataReader public static SqlDataReader RunProcedure(string storedProcName, IDataParameter[] parameters) { SqlConnection connection = OpenSqlConnection(); SqlCommand command =