首页 新闻 搜索 专区 学院

页面疯狂刷新数据库连接报错,请问大侠你们是怎么解决页面安F5疯狂刷新的数据连接问题

0
悬赏园豆:30 [已解决问题] 解决于 2012-08-09 16:52

自己做了一个网站(没什么优化经验) 无意中疯狂的安 f5 就出现了(刷新的速度要快)

有打开的与此 Command 相关联的 DataReader,必须首先将它关闭。

代码:

        public ActionResult Index(string name,int? ObjectID = 1)
        {
            unite un = new unite();
            string txtname = Txt_name;
            un.menu = base.CustomerInfo.GetMeanList(txtname).Tables[0];
            un.dt = base.CustomerInfo.GetDtList(-0).Tables[0];
            int pageSize = 20;
            int pageIndex = ObjectID ?? 1;
            un.pl = new PagedList<DataRow>(un.dt.Select(), pageIndex, pageSize);
            return View(un);
        }

数据执行代码:

        public static DataSet Query(string SQLString)
        {
            using (SqlCommand cmd = new SqlCommand())
            {
                DataSet ds = new DataSet();
                using (SqlDataAdapter da = new SqlDataAdapter(SQLString, _con))
                {
                    da.Fill(ds, "dt");
                    return ds;
                }
            }
        }

数据库连接配置:

  <connectionStrings>
    <add name="DB_ConnString" connectionString="server=WISE-B8742449F4;uid=sa;pwd=123456;database=TFDB;Connect Timeout=15;pooling=true;min pool size=0;max pool size=1000"
      providerName="System.Data.SqlClient" />
  </connectionStrings>

还有这个连接我一直觉得很差 这个是单列模式(不知道说的对没了) 我没看过大公司连接数据库的代码 或者说是能够承受大量用户访问的 数据量连接

 private static SqlConnection con;
        public static SqlConnection _con
        {
            get
            {
                string connectionString = ConfigurationManager.ConnectionStrings["DB_ConnString"].ConnectionString;
                if (con == null)
                {
                    con = new SqlConnection(connectionString);
                    con.Open();
                }
                else if (con.State == ConnectionState.Closed)
                {
                    con.Open();
                }
                else if (con.State == ConnectionState.Broken)
                {
                    con.Close();
                    con.Open();
                }
                return con;
            }
        }

请问大侠你们是怎么解决页面疯狂刷新数据库连接报错的问题 呢?

但是你慢一点刷新就不会出现。

 

s_p的主页 s_p | 菜鸟二级 | 园豆:281
提问于:2012-08-09 14:40
< >
分享
最佳答案
1

SqlConnection千万别做成单例,每次需要的时候都应该新建一个 SqlConnection 对象。

同时要注意,在使用完成后,一定要及时的Close掉。

收获园豆:20
Launcher | 高人七级 |园豆:45045 | 2012-08-09 14:47

恩 我知道别做单列 大侠 帮我改下好吗 我做好了都及时关闭了 但是是单列 还是会出现(疯狂刷新)

s_p | 园豆:281 (菜鸟二级) | 2012-08-09 14:59

@s_p: 这样改:public static SqlConnection _con{get{return new SqlConnection(connectionString);
}}

 using(SqlConnection conn = _con)

{

using (SqlDataAdapter da = new SqlDataAdapter(SQLString,conn))
                {
                    da.Fill(ds,
"dt");
                   
return ds;
                }
}

Launcher | 园豆:45045 (高人七级) | 2012-08-09 15:03

@程序猿.码农: 

public static SqlConnection _con{

get{return new SqlConnection(connectionString); }}

这个只是返回一个SqlConnection 没有打开和关闭 你的意思是打开和关闭到程序具体的执行地方 open() 或者close()?

 
s_p | 园豆:281 (菜鸟二级) | 2012-08-09 15:09

@s_p: 你如果想在new后先Open也行,反正使用SqlConnection对象的SqlCommand之类的都会包含Open的方法,由于 using(SqlConnection conn = _con){},所以,在离开using语句块后,会调用SqlConnection的 Dispose 方法,该方法会调用 Close.

Launcher | 园豆:45045 (高人七级) | 2012-08-09 15:20

@程序猿.码农: 我解决了  不用单列模式 疯狂的刷新没出现那个数据连接的问题 谢了

s_p | 园豆:281 (菜鸟二级) | 2012-08-09 16:51
其他回答(2)
0

用缓存可以解决这个问题

收获园豆:5
dudu | 园豆:38814 (高人七级) | 2012-08-09 14:48

缓存是一个方法 但这里主要的是数据库的连接有问题

支持(0) 反对(0) s_p | 园豆:281 (菜鸟二级) | 2012-08-09 16:51
0

楼主你目前的问题是应该记录(或者简单的显示你报错的具体的错误) 然后再修改你的代码。

收获园豆:5
chenping2008 | 园豆:9836 (大侠五级) | 2012-08-09 15:06
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册