在C#中可以用SqlDataAdapter的Update方法调用DataTable对象更新数据库,还可以用标准的SQL语句更新数据库,请一般用那种方法较好,两方法各有何优缺点?用SqlDataAdapter的Update方法
    DataTable mDataTable = null;
   SqlDataAdapter da;
   da = new SqlDataAdapter("select CustomerID,CompanyName,ContactName from customers", "database connection string");
   SqlCommandBuilder builder = new SqlCommandBuilder(da);
   DataSet ds = new DataSet(); 
   da.Fill(ds);
   mDataTable = ds.Tables[0];
   da.Update(mDataTable);
大概的标准的SQL更新方式:
         SqlConnection mcon = new SqlConnection("database connection string");
            SqlCommand mcom = new SqlCommand();
            strInsert = "Insert ....";
            mcom.Connection = mcon;
            mcom.ExecuteNonQuery(); 

解决方案 »

  1.   

    感觉场合不同,效果不同,SqlDataAdapter在大数据量的时候好吧,毕竟用标准SQL语句去做,无法和ADO.NET做的优化相比,但是小数据的时候标准SQL好些,毕竟数据库连接是宝贵资源,SalDataAdapter用起来应该比标准SQL费些时间,不过,连接在Close后都跑回ADO.NET的连接池了,差别再大也不会太明显个人想法,欢迎拍砖
      

  2.   

    是不是这样的,第一种方式可以做了一系列操作后,之后再提交到数据库,而第二种是每种操作都要自己写sql语句提交?
      

  3.   

    对需要更新大量的数据
    第一条是首选
    应为对应的操作即可更新至数据库第2条是纯SQL语言
    小数据量还行 大一点处理起来怕代码的会比较繁琐
      

  4.   

    关键在于DataSet是存在与内存中的,等你修改好了,一次提交更新数据库
      

  5.   

    SqlDataAdapter的更新是离线的,基于缓存技术的
      

  6.   

    SqlDataAdapter的更新是很方便,但是它应该占用的内存大吧,效率比后者低吧?
      

  7.   

    个人觉得多表关联的话需要的id很多,但不可能显示id,只会显示关联的内容,这样关联的用第二种如果单表的话(无关联)用第一种方便。具体消耗没测试过哈哈