zoukankan      html  css  js  c++  java
  • 关于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];
                        }

                    }

                }

            }

    :-)祝好运!
  • 相关阅读:
    Go简介
    sRGB标准与伽马校正
    【Web】HTTP基本认证之 Basic Auth
    【ElasticSearch】 ElasticSearch SQL(十三)
    【ElasticSearch】 ElasticSearch X-Pack之用户认证(十二)
    【ElasticSearch】 ElasticSearch Java客户端(十一)
    【ElasticSearch】 ElasticSearch集群分布式文档(十)
    【ElasticSearch】 ElasticSearch集群之分片、副本、故障转移(九)
    【ElasticSearch】 ElasticSearch集群安装(八)
    【ElasticSearch】 全文搜索(七)
  • 原文地址:https://www.cnblogs.com/apexchu/p/765937.html
Copyright © 2011-2022 走看看