RT,自己构造的DataTable,跟数据库中表中的结构一样,除了一条条的更新、插入(我是根据ID字段判断是否含有这个条记录,有就执行更新操作,没有就执行插入操作),请问下还有什么高效办法?

解决方案 »

  1.   

    先根据DataTable的ID列全部删除,再全部添加,这样就不需要判断是否有这个记录了
      

  2.   

    DataAdapter有update方法,自己在网上学习一下。具体我也没用过,看别人用过
      

  3.   


    1.把数据的ID拿出来,变成一个int数组
    然后判断那些是可以直接插入的 那些是需要更新的 分成2张DataTable这样就可以减少判断的次数可以直接插入的有个好用的方案
    http://www.cnblogs.com/xyd21c/archive/2011/01/07/1929861.html要更新的 只有一步一步来了
      

  4.   

    樓上幾位思路是正确的,可是操作可以簡單化1. 跟據ID重新設置RowState, 比如: Row.RowSate= (id=1: Add, id=2 Edit, id=3 Delete)
    2. 用Adapter, 綁定3個SqlCommand
    3. Adapter.Update(DataTable)
      

  5.   

    用SqlBulkCopy.WriteToServer(DataTable) 批量加载.
    也可以考虑BCP的方式。
      

  6.   


                SqlDataAdapter sda = new SqlDataAdapter();
                DataTable dt = new DataTable();
                int flag= sda.Update(dt);
      

  7.   

            public static void UpdateDataTable(SqlConnection connection, string selectCommandText, DataTable table)
            {
                if (connection == null) throw new ArgumentNullException("connection");
                if (connection.State != ConnectionState.Open)
                {
                    connection.Open();
                }
                SqlDataAdapter adapter = new SqlDataAdapter();
                adapter.SelectCommand = new SqlCommand(selectCommandText, connection);
                SqlCommandBuilder builder = new SqlCommandBuilder(adapter);
                adapter.Update(table);
                connection.Close();
            }会自动判断DataTable中的Add, Update,Delete 数据,并更新到数据库中。DataTable table  = 数据库获取的的数据  (select * from t0)
    //对table  进行Add, Update,Delete 操作的代码
    .......//更新table
    UpdateDataTable(conn,"select * from t0",table);