自己做了一个网站(没什么优化经验) 无意中疯狂的安 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; } }
请问大侠你们是怎么解决页面疯狂刷新数据库连接报错的问题 呢?
但是你慢一点刷新就不会出现。
SqlConnection千万别做成单例,每次需要的时候都应该新建一个 SqlConnection 对象。
同时要注意,在使用完成后,一定要及时的Close掉。
恩 我知道别做单列 大侠 帮我改下好吗 我做好了都及时关闭了 但是是单列 还是会出现(疯狂刷新)
@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;
}
}
@程序猿.码农:
public static SqlConnection _con{
get{return new SqlConnection(connectionString); }}
这个只是返回一个SqlConnection 没有打开和关闭 你的意思是打开和关闭到程序具体的执行地方 open() 或者close()?
@s_p: 你如果想在new后先Open也行,反正使用SqlConnection对象的SqlCommand之类的都会包含Open的方法,由于 using(SqlConnection conn = _con){},所以,在离开using语句块后,会调用SqlConnection的 Dispose 方法,该方法会调用 Close.
@程序猿.码农: 我解决了 不用单列模式 疯狂的刷新没出现那个数据连接的问题 谢了
用缓存可以解决这个问题
缓存是一个方法 但这里主要的是数据库的连接有问题
楼主你目前的问题是应该记录(或者简单的显示你报错的具体的错误) 然后再修改你的代码。