• 关于SqlHelper中报"Parameter count does not match Parameter Value count."错误的解决方法


    [或许新版SqlHelper这个问题已经解决,这里给碰到同样问题的朋友一个参考]
    SQLHelper抛出的异常是说你的参数量与需要的参数不一至.但有时是默认参数,我们并不需要在程序中也提交这个参数.
    如:PROCEDURE中:
    ALTER PROCEDURE MYTESETPROCEDURE
    (
     @Param1 int,
     @Param2 nvarchar(128) ='Default Value'
    }
    ....
    这样,其实我们提交参数一就可以执行了,但在SQLHELPER中.如果只提供一个参数会报Parameter count does not match Parameter Value count."这样的错误.

    修改SQLHELPER如下:
    private static void AssignParameterValues(SqlParameter[] commandParameters, object[] parameterValues)
            
    {
                
    if ((commandParameters == null|| (parameterValues == null))
                
    {
                    
    // Do nothing if we get no data
                    return;
                }


                
    int parameterValuesLen = parameterValues.Length;
                
    for (int i = 0; i < parameterValuesLen; i++)
                
    {
                    
    if (parameterValues[i] is IDbDataParameter)
                    
    {
                        IDbDataParameter paramInstance 
    = (IDbDataParameter)parameterValues[i];
                        
    foreach (SqlParameter param in commandParameters)
                        
    {
                            
    if (param.ParameterName == paramInstance.ParameterName)
                            
    {
                                
    if (paramInstance.Value == null)
                                
    {
                                    param.Value 
    = DBNull.Value;
                                }

                                
    else
                                
    {
                                    param.Value 
    = paramInstance.Value;
                                }

                                
    break;
                            }

                        }

                    }

                    
    else
                    
    {
                        
    if (commandParameters.Length != parameterValues.Length)
                        
    {
                            
    throw new ArgumentException("Parameter count does not match Parameter Value count.");
                        }


                        
    if (parameterValues[i] == null)
                        
    {   
                            commandParameters[i].Value 
    = DBNull.Value;
                        }

                        
    else
                        
    {
                            commandParameters[i].Value 
    = parameterValues[i];
                        }

                    }

                }

            }

    :-)祝好运!
  • 相关阅读:
    关于MySql 数据库InnoDB存储引擎介绍
    .netcore 中使用开源的AOP框架 AspectCore
    C#关于反序列化实例时,接收实体字段少于或大于原实体对象 解析测试
    PostgreSQL TIMESTAMP类型 时间戳
    C# 新特性 操作符单?与??和 ?. 的使用
    PostgreSQL 常用函数
    AutoCAD.Net/C#.Net QQ群:193522571 previewicon生成的块图标太小,CMLContentSearchPreviews生成大的图片
    C#winform中OpenFileDialog的用法
    C# winform datagridview 无需点击两次即可编辑内嵌控件的方法和删除默认的空行的方法
    C# winform datagridview 内嵌控件值改变后立即触发事件,而不需要离开该单元格时才触发,此时需要用到dgv_CurrentCellDirtyStateChanged事件
  • 原文地址:https://www.cnblogs.com/apexchu/p/765937.html
Copyright © 2020-2023  润新知