我平时做datagridview里数据的修改之类的操作时。喜欢用这样的语句
SqlDataAdapter sda = new SqlDataAdapter("select * from denglu", s1);
DataTable dt = new DataTable();
                            sda.Fill(dt);
                            dt.PrimaryKey = new DataColumn[] { dt.Columns[1] };
                            DataRow dr = dt.Rows.Find(Form1.yhm);
                            dr[2] = s;
                            dr[3] = privatekey;
                          SqlCommandBuilder  scb = new SqlCommandBuilder(sda);                            sda.Update(new DataRow[] { dr });我想问。如果数据库里数据很多的话,SqlDataAdapter sda = new SqlDataAdapter("select * from denglu", s1);这条语句执行起来是不是大大影响程序的运行速度?好像updata之前的操作都只是为了获得表的结构。这样做是不是很不好?

解决方案 »

  1.   

    不会有效率问题的。而且,你只要为一个SqlDataAdapter,创建一次SqlCommandBuilder就可以了。
      

  2.   

    但是需要注意的是,如果SqlCommandBuider用指定的SqlDataAdapter创建后,你修改了SqlDataAdapter的SelectCommand,这时候,用SqlCommandBuider生成的逻辑就不会了,所以update会出现问题。
    可以考虑手工指定SqlDataAdapter的UpdateCommand、InsertCommand和DeleteCommand.
      

  3.   

    sda.Fill(dt);如果有几万个记录。这句不是把所有记录都填充到datatable了吗。没影响的啊
      

  4.   

    有问题,绝对会影响速度,在c#语句中,不要出现SQL语句,把SQL语句放入存储过程中区,c#语句中只能出现视图和存储过程名称,OK,明白与否?
      

  5.   

    企业环境中用sqlDataAdapter来更新数据库里的数据,效率低下。
    采用别的方式如Linq/NHibernate/ADO.NET直接执行Update语句。
      

  6.   

    Linq/NHibernate/ADO.NET 这是那里引用.