using System;
using System.Data;
using System.Text;using System.Data.SqlClient;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;public partial class smsgroup : System.Web.UI.Page
{
string RequestUserID = "";
string RequestUserQX = "";
string RequestUserqxstr = "";
string RequestUserName = "";
string RequestUserZZTT = "";
string RequestUserGroup = "";
string RequestUserCode = ""; protected void Page_Load(object sender, EventArgs e)
{
RequestUserID = Request.Cookies["UserID"].Value;
RequestUserQX = Request.Cookies["UserQX"].Value;
RequestUserqxstr = Request.Cookies["Userqxstr"].Value;
RequestUserName = HttpUtility.UrlDecode(Request.Cookies["UserName"].Value);
RequestUserZZTT = Request.Cookies["UserZZTT"].Value;
RequestUserGroup = Request.Cookies["UserGroup"].Value;
RequestUserCode = Request.Cookies["UserCode"].Value;
if (!IsPostBack)
{
if (Convert.ToInt32(RequestUserZZTT) < 9)
{
Response.Redirect("usergrinfo.aspx");
}
AspNetPager1.RecordCount = getpagecount();
bindData(); }
}
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
if (DropDownList1.SelectedValue == "0")
{
Response.Redirect("");
}
if (DropDownList1.SelectedValue == "1")
{
Response.Redirect("smsgroup.aspx");
}
if (DropDownList1.SelectedValue == "2")
{
Response.Redirect("smsgusr.aspx");
}
if (DropDownList1.SelectedValue == "3")
{
Response.Redirect("sjgl.aspx");
}
if (DropDownList1.SelectedValue == "4")
{
Response.Redirect("SMS_Accp.aspx");
}
if (DropDownList1.SelectedValue == "5")
{
Response.Redirect("newsms.aspx");
}
}
protected void sall(object sender, EventArgs e)
{
System.Web.UI.WebControls.CheckBox chkExport;
System.Web.UI.WebControls.CheckBox chkExport1;
chkExport = (CheckBox)((DataListItem)dlgwlist.Controls[0]).FindControl("selectAll");
if (chkExport.Checked)
{
foreach (DataListItem odatalistIt in dlgwlist.Items)
{
chkExport1 = (CheckBox)odatalistIt.FindControl("selectCB");
chkExport1.Checked = true;
}
}
else
{
foreach (DataListItem odatalistIt in dlgwlist.Items)
{
chkExport1 = (CheckBox)odatalistIt.FindControl("selectCB");
chkExport1.Checked = false;
}
}
} protected void Button4_Click(object sender, EventArgs e)
{
Response.Redirect("editsmsgroup.aspx?id=0");
}
protected void Button2_Click(object sender, EventArgs e)
{ } protected void ImageButton1_Click(object sender, ImageClickEventArgs e)
{
AspNetPager1.RecordCount = getpagecount();
bindData();
} void bindData()
{
dlgwlist.DataSource = SqlHelper.ExecuteReader(CommandType.StoredProcedure, "P_GetPageSmsGroup",
new SqlParameter("@startIndex", AspNetPager1.StartRecordIndex),
new SqlParameter("@pageSize", AspNetPager1.PageSize),
new SqlParameter("@groupgs", Convert.ToInt32(RadioButtonList1.SelectedValue.ToString())),
new SqlParameter("@keys", cznr.Text.ToString()));
dlgwlist.DataBind();
}
protected void AspNetPager1_PageChanged(object src, EventArgs e)
{
bindData();
}
private int getpagecount()
{
int totalOrders = (int)SqlHelper.ExecuteScalar(CommandType.StoredProcedure, "P_GetSmsGroupNumber",
new SqlParameter("@groupgs", Convert.ToInt32(RadioButtonList1.SelectedValue.ToString())),
new SqlParameter("@keys", cznr.Text.ToString()));
return totalOrders;
} private int getsmsgroupGS(int musid)
{
int gsnum = 0;
string sql = "select gs from smsusr_group where id = " + musid;
DataBase db = new DataBase();
SqlDataReader dr = db.ExecuteReader(sql);
if (dr.Read())
{
gsnum = Convert.ToInt32(dr["gs"].ToString().Trim());
}
return gsnum;
dr.Close();
db.Close();
}
protected void dlgwlist_ItemCommand(object source, DataListCommandEventArgs e)
{
if (e.CommandName == "cmddel")
{
string keynum = dlgwlist.DataKeys[(int)e.Item.ItemIndex].ToString().Trim();
string keynum1 = "~" + keynum + "~";
DataBase db = new DataBase();
string sql = "delete from smsusr_group WHERE id = " + keynum;
db.ExecuteSQL(sql);
string sql1 = "select id,groupid from smsusr WHERE groupid like '%" + keynum1 + "%'";//这个有问题!
SqlDataReader dr = db.ExecuteReader(sql1);
while (dr.Read())
{
StringBuilder sb = new StringBuilder();
sb.Append(dr["groupid"].ToString());
sb.Replace(keynum1 + ",","");
DataBase db1 = new DataBase();
string sqlup;
if (sb.Length > 0)
{
sqlup = "update smsusr set groupid = '" + sb.ToString() + "' where id = " + dr["id"] + "";
}
else
{
sqlup = "delete from smsusr where id = " + dr["id"] + "";
}
db1.ExecuteSQL(sqlup);
db1.Close();
}
dr.Close();
db.Close();
AspNetPager1.RecordCount = getpagecount();
bindData(); }
if (e.CommandName == "smsusr")
{
Response.Redirect("smsgusr.aspx?gid=" + dlgwlist.DataKeys[(int)e.Item.ItemIndex].ToString().Trim());
}
if (e.CommandName == "editusrgroup")
{
Response.Redirect("editsmsgroup.aspx?id=" + dlgwlist.DataKeys[(int)e.Item.ItemIndex].ToString().Trim());
}
}
protected void numgroup(object sender, DataListItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
int numid = Convert.ToInt32(dlgwlist.DataKeys[(int)e.Item.ItemIndex].ToString().Trim());
string str;
string strnum = "~" + numid.ToString().Trim() + "~";
DataBase db = new DataBase();
if (getsmsgroupGS(numid) == 0)
{
str = "select count(*) as rcount from smsusr where groupid like '%" + strnum + "%'"; }
else
{
str = "select count(*) as rcount from user_info where groupid like '%" + strnum + "%'"; } SqlDataReader dr = db.ExecuteReader(str);
if (dr.Read())
{
int pnum = Convert.ToInt32(dr["rcount"].ToString());
((Label)e.Item.FindControl("lbgnum")).Text = pnum.ToString();
}
dr.Close();
db.Close();
}
}
protected void RadioButtonList1_SelectedIndexChanged(object sender, EventArgs e)
{
AspNetPager1.RecordCount = getpagecount();
bindData();
}
}
using System.Data;
using System.Text;using System.Data.SqlClient;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;public partial class smsgroup : System.Web.UI.Page
{
string RequestUserID = "";
string RequestUserQX = "";
string RequestUserqxstr = "";
string RequestUserName = "";
string RequestUserZZTT = "";
string RequestUserGroup = "";
string RequestUserCode = ""; protected void Page_Load(object sender, EventArgs e)
{
RequestUserID = Request.Cookies["UserID"].Value;
RequestUserQX = Request.Cookies["UserQX"].Value;
RequestUserqxstr = Request.Cookies["Userqxstr"].Value;
RequestUserName = HttpUtility.UrlDecode(Request.Cookies["UserName"].Value);
RequestUserZZTT = Request.Cookies["UserZZTT"].Value;
RequestUserGroup = Request.Cookies["UserGroup"].Value;
RequestUserCode = Request.Cookies["UserCode"].Value;
if (!IsPostBack)
{
if (Convert.ToInt32(RequestUserZZTT) < 9)
{
Response.Redirect("usergrinfo.aspx");
}
AspNetPager1.RecordCount = getpagecount();
bindData(); }
}
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
if (DropDownList1.SelectedValue == "0")
{
Response.Redirect("");
}
if (DropDownList1.SelectedValue == "1")
{
Response.Redirect("smsgroup.aspx");
}
if (DropDownList1.SelectedValue == "2")
{
Response.Redirect("smsgusr.aspx");
}
if (DropDownList1.SelectedValue == "3")
{
Response.Redirect("sjgl.aspx");
}
if (DropDownList1.SelectedValue == "4")
{
Response.Redirect("SMS_Accp.aspx");
}
if (DropDownList1.SelectedValue == "5")
{
Response.Redirect("newsms.aspx");
}
}
protected void sall(object sender, EventArgs e)
{
System.Web.UI.WebControls.CheckBox chkExport;
System.Web.UI.WebControls.CheckBox chkExport1;
chkExport = (CheckBox)((DataListItem)dlgwlist.Controls[0]).FindControl("selectAll");
if (chkExport.Checked)
{
foreach (DataListItem odatalistIt in dlgwlist.Items)
{
chkExport1 = (CheckBox)odatalistIt.FindControl("selectCB");
chkExport1.Checked = true;
}
}
else
{
foreach (DataListItem odatalistIt in dlgwlist.Items)
{
chkExport1 = (CheckBox)odatalistIt.FindControl("selectCB");
chkExport1.Checked = false;
}
}
} protected void Button4_Click(object sender, EventArgs e)
{
Response.Redirect("editsmsgroup.aspx?id=0");
}
protected void Button2_Click(object sender, EventArgs e)
{ } protected void ImageButton1_Click(object sender, ImageClickEventArgs e)
{
AspNetPager1.RecordCount = getpagecount();
bindData();
} void bindData()
{
dlgwlist.DataSource = SqlHelper.ExecuteReader(CommandType.StoredProcedure, "P_GetPageSmsGroup",
new SqlParameter("@startIndex", AspNetPager1.StartRecordIndex),
new SqlParameter("@pageSize", AspNetPager1.PageSize),
new SqlParameter("@groupgs", Convert.ToInt32(RadioButtonList1.SelectedValue.ToString())),
new SqlParameter("@keys", cznr.Text.ToString()));
dlgwlist.DataBind();
}
protected void AspNetPager1_PageChanged(object src, EventArgs e)
{
bindData();
}
private int getpagecount()
{
int totalOrders = (int)SqlHelper.ExecuteScalar(CommandType.StoredProcedure, "P_GetSmsGroupNumber",
new SqlParameter("@groupgs", Convert.ToInt32(RadioButtonList1.SelectedValue.ToString())),
new SqlParameter("@keys", cznr.Text.ToString()));
return totalOrders;
} private int getsmsgroupGS(int musid)
{
int gsnum = 0;
string sql = "select gs from smsusr_group where id = " + musid;
DataBase db = new DataBase();
SqlDataReader dr = db.ExecuteReader(sql);
if (dr.Read())
{
gsnum = Convert.ToInt32(dr["gs"].ToString().Trim());
}
return gsnum;
dr.Close();
db.Close();
}
protected void dlgwlist_ItemCommand(object source, DataListCommandEventArgs e)
{
if (e.CommandName == "cmddel")
{
string keynum = dlgwlist.DataKeys[(int)e.Item.ItemIndex].ToString().Trim();
string keynum1 = "~" + keynum + "~";
DataBase db = new DataBase();
string sql = "delete from smsusr_group WHERE id = " + keynum;
db.ExecuteSQL(sql);
string sql1 = "select id,groupid from smsusr WHERE groupid like '%" + keynum1 + "%'";//这个有问题!
SqlDataReader dr = db.ExecuteReader(sql1);
while (dr.Read())
{
StringBuilder sb = new StringBuilder();
sb.Append(dr["groupid"].ToString());
sb.Replace(keynum1 + ",","");
DataBase db1 = new DataBase();
string sqlup;
if (sb.Length > 0)
{
sqlup = "update smsusr set groupid = '" + sb.ToString() + "' where id = " + dr["id"] + "";
}
else
{
sqlup = "delete from smsusr where id = " + dr["id"] + "";
}
db1.ExecuteSQL(sqlup);
db1.Close();
}
dr.Close();
db.Close();
AspNetPager1.RecordCount = getpagecount();
bindData(); }
if (e.CommandName == "smsusr")
{
Response.Redirect("smsgusr.aspx?gid=" + dlgwlist.DataKeys[(int)e.Item.ItemIndex].ToString().Trim());
}
if (e.CommandName == "editusrgroup")
{
Response.Redirect("editsmsgroup.aspx?id=" + dlgwlist.DataKeys[(int)e.Item.ItemIndex].ToString().Trim());
}
}
protected void numgroup(object sender, DataListItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
int numid = Convert.ToInt32(dlgwlist.DataKeys[(int)e.Item.ItemIndex].ToString().Trim());
string str;
string strnum = "~" + numid.ToString().Trim() + "~";
DataBase db = new DataBase();
if (getsmsgroupGS(numid) == 0)
{
str = "select count(*) as rcount from smsusr where groupid like '%" + strnum + "%'"; }
else
{
str = "select count(*) as rcount from user_info where groupid like '%" + strnum + "%'"; } SqlDataReader dr = db.ExecuteReader(str);
if (dr.Read())
{
int pnum = Convert.ToInt32(dr["rcount"].ToString());
((Label)e.Item.FindControl("lbgnum")).Text = pnum.ToString();
}
dr.Close();
db.Close();
}
}
protected void RadioButtonList1_SelectedIndexChanged(object sender, EventArgs e)
{
AspNetPager1.RecordCount = getpagecount();
bindData();
}
}
AspNetPager1.RecordCount = getpagecount();
bindData();
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.InvalidOperationException: 超时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小。源错误:
行 22: {
行 23: con = new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"]);
行 24: con.Open();
行 25: }
行 26:
源文件: e:\DZZW\dzzwadmin\App_Code\DataBase.cs 行: 24
===========
解决方法(*):
WEB.config 里面:
在数据库连接加 Max Pool Size = 512;
server=local;uid=;pwd=;database=2007;Max Pool Size = 512;">
SqlDataReader dr = db.ExecuteReader(sql1);
楼主检查一下你的DataBase 类的ExecuteReader(string sql)方法中
返回DataReader时的方法
比如下面的语句
SqlDataReader myReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
return myReader;
如果没有使用CommandBehavior.CloseConnection这个重载
那你将来的dr.Close()将是无效的
或者是你用了try /catch捕获异常 但在处理语句中没有再次处理 导致异常被毫无知觉得屏蔽掉 这样要检查到出错点非常困难 但见你上面的程序没有一处异常处理 数据库连接的处理流程也不科学 比如下面
private int getsmsgroupGS(int musid)
{
int gsnum = 0;
string sql = "select gs from smsusr_group where id = " + musid;
DataBase db = new DataBase();
SqlDataReader dr = db.ExecuteReader(sql);
if (dr.Read())
{
gsnum = Convert.ToInt32(dr["gs"].ToString().Trim());
}
return gsnum;
dr.Close();
db.Close();
}
如果没有成功读到数据 即if(!dr.Read()) 那后面的dr.Close()就会出错了 如果gsnum = Convert.ToInt32(dr["gs"].ToString().Trim())这句出错 程序就执行不到db.close() 又多出一个剩余连接 就是上面说到的情况
你程序都是这样处理的 建议修改 再跟踪下程序吧 别忘了给分哦
WEB.config 里面:
在数据库连接加 Max Pool Size = 512;
server=local;uid=;pwd=;database=2007;Max Pool Size = 512;">
-----------------------------------------------------------
此方法不可取,并没有真正解决问题,只是扩大的连接池大小而已,还会出错的
2.检查是否同时打开太多SqlConnection;
3.检查是否有循环查询次数过多的代码;
4.数据量过多的多表查询不要用子查询,要用内连接,如果表结构不方便用内连接也要改了用内连接或外连接,因为子查询是单独又执行了一次select,所以假设有10000条结果的话,那么连上你的第一次查询+10000次子查询就等于连续查询了10001次,那样很耗费。总之LZ应该补一补Sql和Ado.Net的一些内部架构了,要不然只能开发一点数据量很小的小网站。
private int getsmsgroupGS(int musid)
{
int gsnum = 0;
string sql = "select gs from smsusr_group where id = " + musid;
DataBase db = new DataBase();
SqlDataReader dr = db.ExecuteReader(sql);
if (dr.Read())
{
gsnum = Convert.ToInt32(dr["gs"].ToString().Trim());
}
return gsnum;
dr.Close();
db.Close();
}看了下代码发现你这里就没有关闭任何连接,都已经return了后面的东西还会执行?恐怕不会了吧,按个调试你就知道了。
private int getsmsgroupGS(int musid)
{
int gsnum = 0;
string sql = "select gs from smsusr_group where id = " + musid;
DataBase db = new DataBase();
SqlDataReader dr = db.ExecuteReader(sql);
if (dr.Read())
{
gsnum = Convert.ToInt32(dr["gs"].ToString().Trim());
}
return gsnum;
dr.Close();
db.Close();
}
如果没有成功读到数据 即if(!dr.Read()) 那后面的dr.Close()就会出错了 如果gsnum = Convert.ToInt32(dr["gs"].ToString().Trim())这句出错 程序就执行不到db.close() 又多出一个剩余请问这里要怎么改?
2、致命问题:从头到尾没有一处进行了容错处理,Try……Catch是干什么的?就是为了让程序出错时,不把代码直接赤裸裸的暴露在用户面前。如果这段代码是用来学习操作数据库的,还可以作为找错误的参考。但是如果是实际程序,我想问题会很多很多,基本上是卖不出去的
{
int gsnum = 0;
string sql = "select gs from smsusr_group where id = " + musid;
DataBase db = new DataBase();
try{
SqlDataReader dr = db.ExecuteReader(sql);
if (dr.Read())
{
gsnum = Convert.ToInt32(dr["gs"].ToString().Trim());
}
dr.Close();
db.Close();
return gsnum;
}
catch(exception e){
//这里写容错的处理
}
}