读书人

高手帮小弟我看看代码刷新过多就出错

发布时间: 2012-01-24 23:11:54 作者: rapoo

高手帮我看看代码,刷新过多就出错
高手帮我看看代码,本人第一次写代码可能好多地方不规范,刷新过多就出现未指定的错误,CS代码如下:

private void dataBindToDatalist()
{
int curPage = Convert.ToInt32(this.Label2.Text);
OleDbConnection con = db.creater();
OleDbDataAdapter oda = new OleDbDataAdapter();
oda.SelectCommand = new OleDbCommand( "select * from guestbook where allow=true order by id desc ", con);
DataSet ds = new DataSet();
oda.Fill(ds, "book ");
this.DataList1.DataKeyField = "id ";
System.Web.UI.WebControls.PagedDataSource ps = new PagedDataSource();
ps.DataSource = ds.Tables[ "book "].DefaultView;
ps.AllowPaging = true;
ps.PageSize = 4;
ps.CurrentPageIndex = curPage - 1;
this.LinkButton1.Enabled = true;
this.LinkButton2.Enabled = true;
if (curPage == 1)
{
this.LinkButton1.Enabled = false;
}
if (curPage == ps.PageCount)
{
this.LinkButton2.Enabled = false;
}
this.DataList1.DataSource = ps;
this.DataList1.DataBind();
}


protected void ImageButton1_Click(object sender, ImageClickEventArgs e)
{
if (Request.Cookies[ "user "] == null)
{
Response.Write( " <script> alert( '您还没有登录,请先登录! ') </script> ");
}
else
{
if (String.Compare(Session[ "CheckCode "].ToString(), this.TextBox6.Text, true) != 0)


{
Response.Write( " <script> alert( '请输入真确的验证码! ') </script> ");
}
else
{
string guestName = HttpUtility.UrlDecode(Request.Cookies[ "user "].Value.ToString());
OleDbConnection con = db.creater();
con.Open();
OleDbCommand cmd = new OleDbCommand( "insert into guestbook(guesttitle,guestName,guestcontent,guestdate) Values ( ' " + this.TextBox1.Text + " ', ' " + guestName + " ', ' " + this.TextBox9.Text + " ',# " + DateTime.Now + "#) ", con);
cmd.ExecuteNonQuery();
con.Close();
con.Dispose();
Response.Write( " <script> alert( '恭喜您,留言成功,我们会尽快回复您! ') </script> ");
}
}
}
public string roleName(string guestName)//用户角色判断
{
string name = guestName.Trim();
Label role = new Label();
OleDbConnection con = db.creater();
con.Open();
OleDbCommand cmd = new OleDbCommand( "select * from [user] where userName= ' " + name + " ' ", con);
OleDbDataReader odr = cmd.ExecuteReader();
if (odr.Read())
{
int classID = Convert.ToInt32(odr[ "role "]);


OleDbCommand cmd2 = new OleDbCommand( "select * from usergroup where id= " + classID + " ", con);
OleDbDataReader dr = cmd2.ExecuteReader();
if (dr.Read())
{
return role.Text = dr[ "groupName "].ToString();
}
else
{
return role.Text = "此用户还没有角色 ";
}
dr.Close();
dr.Dispose();
}
else
{
return role.Text = "用户名不存在 ";
}
odr.Close();
odr.Dispose();
con.Close();
con.Dispose();
}
public string touxiang(string guestName)// 头像选择
{
string src = " ";
OleDbConnection conn = db.creater();
conn.Open();
OleDbCommand cmd = new OleDbCommand( "select * from [user] where userName= ' " + guestName.Trim() + " ' ", conn);
OleDbDataReader oda = cmd.ExecuteReader();
if (oda.Read())
{
string sex = oda[ "sex "].ToString();
if (sex.Trim() == "男 ")
{


return src = "images/boy.gif ";
}
else
{
return src = "images/girl.gif ";
}
}
else
{
return src = " ";
}
oda.Close();
oda.Dispose();
conn.Close();
conn.Dispose();
}
public bool answer(string s)
{
bool guestanswer = false;
if (s.Trim() == " ")
{
return guestanswer = false;
}
else
{
return guestanswer = true;
}
}
public string resultValue(string guestName,string name)// 获取QQ、MSN、EMAIL的值
{
string result = " ";
OleDbConnection con = db.creater();
con.Open();
OleDbCommand cmd = new OleDbCommand( "select * from [user] where userName= ' " + guestName.Trim() + " ' ", con);
OleDbDataReader dr = cmd.ExecuteReader();
if (dr.Read())
{
return result = dr[name].ToString();
}


else
{
return result = " ";
}
dr.Close();
dr.Dispose();
con.Close();
con.Dispose();
}
protected void DataList1_DeleteCommand(object source, DataListCommandEventArgs e)
{
string ID = this.DataList1.DataKeys[e.Item.ItemIndex].ToString();
OleDbConnection con = db.creater();
con.Open();
OleDbCommand cmd = new OleDbCommand( "delete from guestbook where id= " + ID + " ", con);
cmd.ExecuteNonQuery();
con.Close();
con.Dispose();
this.dataBindToDatalist();
Response.Write( " <script> alert( '留言删除成功! ') </script> ");
}
protected void DataList1_EditCommand(object source, DataListCommandEventArgs e)
{
this.DataList1.EditItemIndex = e.Item.ItemIndex;
this.dataBindToDatalist();
}
protected void DataList1_UpdateCommand(object source, DataListCommandEventArgs e)
{
string ID = this.DataList1.DataKeys[e.Item.ItemIndex].ToString();
string title = ((TextBox)e.Item.FindControl( "TextBox3 ")).Text;
string content = ((TextBox)e.Item.FindControl( "TextBox2 ")).Text;
OleDbConnection con = db.creater();
con.Open();
OleDbCommand cmd = new OleDbCommand( "update guestbook set guesttitle= ' " + title + " ',guestcontent= ' "+content+ " ' where id= " + ID + " ", con);
cmd.ExecuteNonQuery();
con.Close();
con.Dispose();


this.DataList1.EditItemIndex = -1;
this.dataBindToDatalist();
Response.Write( " <script> alert( '数据更新成功! ') </script> ");
}
protected void DataList1_CancelCommand(object source, DataListCommandEventArgs e)
{
this.DataList1.EditItemIndex = -1;
this.dataBindToDatalist();
}
public bool nullJudge(string guestName, string name)//判断是否有QQ、MSN
{
bool judge = true;
OleDbConnection con = db.creater();
con.Open();
OleDbCommand cmd = new OleDbCommand( "select * from [user] where userName= ' " + guestName.Trim() + " ' ", con);
OleDbDataReader dr = cmd.ExecuteReader();
if (dr.Read())
{
string str = dr[name].ToString();
if (str.Trim() == " ")
{
return judge = false;
}
else
{
return judge = true;
}
}
else
{
return judge = false;
}
dr.Close();
dr.Dispose();
con.Close();
con.Dispose();
}





------解决方案--------------------


大概看了下搂主的代码
每次DataBind之后ds没有清空

this.DataList1.DataSource = ps;
this.DataList1.DataBind();
ds.Clear();
ds.Dispose();
[解决办法]
而且
dataBindToDatalist里
没有关闭数据库连接的语句
需要加上
不然刷新过多可能引起连接池溢出

读书人网 >asp.net

热点推荐