想请各位大侠帮忙改一下这里的代码,优化一下数据库连接部分代码使其达到最好。
  private static void getResult(HttpContext context)
        {
            DataTable dt = new DataTable();
            string connectString = ConfigurationManager.ConnectionStrings["student"].ConnectionString;
            SqlConnection conn = new SqlConnection(connectString); //加载连接字符串
            string name = context.Server.UrlDecode(context.Request.QueryString["username"]); //获得传来的值
            string sql = "select * from student where name='" + name + "'";  //sql
            conn.Open();
            SqlDataAdapter da = new SqlDataAdapter(sql,conn);
            DataSet ds = new DataSet();
            da.Fill(ds,"temp");
            dt = ds.Tables[0];
            if (dt.Rows.Count > 0)
            {
               context.Response.Write("1"); //存在
            }
            else
            {
                context.Response.Write("0"); //不存在
            }
        }

解决方案 »

  1.   

    select count(1) from ...使用参数化查询
      

  2.   

    用datareader好点吧 没必要用dataset
      

  3.   

    用 SqlDataReader 不应该返回数据集
      

  4.   

    select top 1 1 from
      

  5.   

    SqlDataAdapter da = new SqlDataAdapter(sql,conn);
                DataSet ds = new DataSet();
                da.Fill(ds,"temp");没必要这样大动干戈吧!把dataset都请来了!
      

  6.   

    读出来去判断?不用这么麻烦吧
    string sql = "select count(*) from student where name='" + name + "'";  //sql
    int Result= cmd.ExecuteScalar();
    if (Result > 0)
                {
                   context.Response.Write("1"); //存在
                }
                else
                {
                    context.Response.Write("0"); //不存在
                }
      

  7.   

    这个个体怎么个优化法呢?
    比如我想用sqlcommand对象
      

  8.   

    我想推荐一个开发智力的网址给大家看一下:
    http://www.renrousousuo.com/Rounded.aspx
      

  9.   

    不行啊,集思广益嘛。
    想法好是好,但我想用那个sqlcommand对象去做,不想用那个sqladapter对象去做。
      

  10.   

    你仔细看清楚我的方法,有用到sqladapter?
      

  11.   


    用 select count(1) from MyTable
    +
    ado.net 的 SqlCommand 的 ExecuteScalar() 撷取单一个值
    的专属方法即可,且性能最优。连 DataReader 都不用用了,更不要说超笨重又耗内存的 DataSet。
      

  12.   

    最好不要用sqladapter对象 ,直接 cmd.ExecuteScalar()方式判断是否为空就好了