我是一个刚学asp.net的新手,每一个动作(按钮)下面都是像下面一样(不断的打开、关闭数据库,操作数据),组成的多个页面。我有几个疑问:1、这样做是麻烦,重复的连接数据库、打开、关闭;会不会影响性能和访问速度?2、能不能给我下面这段代码进行优化一下(查找用户是否存在,如果存在,将相关信息保存在Session里?
SqlConnection con = new SqlConnection("server=(local);uid=sa;pwd=;database=GLXT");
con.Open();
SqlCommand com = new SqlCommand("select * from jshmain where name='" + TextBox1.Text.Trim() + "' and password='" + TextBox2.Text.Trim() + "'", con);
SqlDataReader mydrb = com.ExecuteReader();
if (mydrb.Read())
{
string sqlstr = "data source=(local);database=GLXT;uid=sa;pwd=;";
SqlConnection strCon = new SqlConnection(sqlstr);
SqlDataAdapter myda = new SqlDataAdapter("select * from jshmain where name='" + TextBox1.Text.Trim() + "' and password='" + TextBox2.Text.Trim() + "'", strCon);
DataSet myds = new DataSet();
strCon.Open();
myda.Fill(myds, "aaa");
DataRowView mydrv = myds.Tables["aaa"].DefaultView[0]; Session["leibie"] = Convert.ToString(mydrv.Row["类别"]);
Session["xianshi"] = Convert.ToString(mydrv.Row["市县"]);
Session["xiangzheng"] = Convert.ToString(mydrv.Row["乡镇"]);
Session["xuexiao"] = Convert.ToString(mydrv.Row["任教学校"]);
Session["name"] = Convert.ToString(mydrv.Row["name"]);
strCon.Close();
Response.Redirect("CGjiaoshiindex.aspx");
}
else
{
Response.Write("<script>alert('该用户不存在!')</script>");
}
SqlConnection con = new SqlConnection("server=(local);uid=sa;pwd=;database=GLXT");
con.Open();
SqlCommand com = new SqlCommand("select * from jshmain where name='" + TextBox1.Text.Trim() + "' and password='" + TextBox2.Text.Trim() + "'", con);
SqlDataReader mydrb = com.ExecuteReader();
if (mydrb.Read())
{
string sqlstr = "data source=(local);database=GLXT;uid=sa;pwd=;";
SqlConnection strCon = new SqlConnection(sqlstr);
SqlDataAdapter myda = new SqlDataAdapter("select * from jshmain where name='" + TextBox1.Text.Trim() + "' and password='" + TextBox2.Text.Trim() + "'", strCon);
DataSet myds = new DataSet();
strCon.Open();
myda.Fill(myds, "aaa");
DataRowView mydrv = myds.Tables["aaa"].DefaultView[0]; Session["leibie"] = Convert.ToString(mydrv.Row["类别"]);
Session["xianshi"] = Convert.ToString(mydrv.Row["市县"]);
Session["xiangzheng"] = Convert.ToString(mydrv.Row["乡镇"]);
Session["xuexiao"] = Convert.ToString(mydrv.Row["任教学校"]);
Session["name"] = Convert.ToString(mydrv.Row["name"]);
strCon.Close();
Response.Redirect("CGjiaoshiindex.aspx");
}
else
{
Response.Write("<script>alert('该用户不存在!')</script>");
}
Session["xianshi"] = Convert.ToString(mydrv.Row["市县"]);
Session["xiangzheng"] = Convert.ToString(mydrv.Row["乡镇"]);
Session["xuexiao"] = Convert.ToString(mydrv.Row["任教学校"]);
Session["name"] = Convert.ToString(mydrv.Row["name"]);
strCon.Close();
------------------
这个地方,楼主不觉得麻烦么,建议创建一个类,然后将对象存到session中。
连接数据库的代码写在一个类里面(数据访问层) Session["leibie"] = Convert.ToString(mydrv.Row["类别"]);
Session["xianshi"] = Convert.ToString(mydrv.Row["市县"]);
Session["xiangzheng"] = Convert.ToString(mydrv.Row["乡镇"]);
Session["xuexiao"] = Convert.ToString(mydrv.Row["任教学校"]);
Session["name"] = Convert.ToString(mydrv.Row["name"]);
strCon.Close();
这种代码最好不要存在
你可以用DataTable 代替
Session用多了对服务器不好
下载一些代码看看大有帮助的。