zoukankan      html  css  js  c++  java
  • 另一个SqlParameterCollection 中已包含 SqlParameter

    自从用了sqlHelper后就时不时的出现这个问题,想来想去是不是SQL缓存了(个人理解),于是,修改了sqlHelper类,增加了一个方法和几句代码

    Code
    //增加了一个属性,把原本全过程传递参数改为对象传递
            public SqlParameter[] Parameters
            {
                
    set
                {
                    parameters 
    = value;
                }
                
    get
                {
                    
    return parameters;
                }
            }
    //继承IDisponse接口,实现了IDisponse()方法,将Parameters设置为null
            public void Dispose()
            {
                parameters 
    = null;
                commandText 
    = null;
                conntctionString 
    = null;
            }
    //完成SQL后将Parameters清除还不够,要设置为空,错误后也要设置为空,因为是先设置好参数,才开始查询,就算查询失败,参数还是被传递进去了
            public SqlDataReader ExecuteReader()
            {
                SqlCommand cmd 
    = new SqlCommand();
                SqlConnection conn 
    = new SqlConnection(conntctionString);
                
    try
                {
                    PrepareCommand(cmd, conn, 
    null, commandType, commandText, parameters);
                    SqlDataReader rdr 
    = cmd.ExecuteReader(CommandBehavior.CloseConnection);
                    cmd.Parameters.Clear();
                    cmd.Dispose();
                    parameters 
    = null;//设置参数为null
                    return rdr;
                }
                
    catch
                {
                    conn.Close();
                    
    this.Dispose();//清除参数
                    throw;
                }
            }

    本来这个样子好了很多,可是偶尔还是会,例如数据库出错,下次打开就会错误,估计就是SQL或者ado.net把参数或者对象缓存了

    //在构造函数里面将parameters设置为null

            
    public MSSQLHelper()
            {
                parameters 
    = null;
            }

    如此折腾了一翻,暂时没问题

  • 相关阅读:
    大型网站技术架构读书笔记目录
    读书笔记1: 大型网站架构演化
    关于HTML5中的canvas标签的个个人理解
    javascript的部分功能实现
    简易计算机的做法
    关于C语言的学习和理解
    体验LESS CSS 框架
    在学习ps中的问题和理解。
    关于做登录页面
    css实现动画功能
  • 原文地址:https://www.cnblogs.com/tthxnz/p/1301853.html
Copyright © 2011-2022 走看看