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];
                        }

                    }

                }

            }

    :-)祝好运!
  • 相关阅读:
    微博那点事(2)
    微博那点事(1)
    Netty断线重连
    高效沟通技巧
    Latex 公式在线可视化编辑器
    RPC框架原理与实现
    Java 静态代理与动态代理
    程序员主管之路(1)
    MarkDown 常用语法教程
    Solr vs. Elasticsearch谁是开源搜索引擎王者
  • 原文地址:https://www.cnblogs.com/apexchu/p/765937.html
Copyright © 2011-2022 走看看