我是一个刚学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>");
                    }

解决方案 »

  1.   

    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(); 
    ------------------
    这个地方,楼主不觉得麻烦么,建议创建一个类,然后将对象存到session中。
      

  2.   

    你将
    连接数据库的代码写在一个类里面(数据访问层)   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用多了对服务器不好
      

  3.   

    最好写在一个类里,每次都写一次连接字符串有点麻烦,可以使用SQLhelper,里面提供了很多方法。可以直接使用。
    下载一些代码看看大有帮助的。