我的内存表的DataSet里有10000条记录。我是用DataSet自带的Update把记录更新到数据库速度快呢?还是写个循环一行一行的往数据库里插入呢?
主要是一行行的插入,我能在存储过程里做一些对其它表的处理。但是如果用Update,它触发什么事件呢?谢谢!

解决方案 »

  1.   

    显然Update好,照样可以使用存储过程对其他表进行处理
      

  2.   

    DataAdapter.Update()与存储过程是各有利弊了。个人觉得存储过程在速度上肯定要比在程序里执行update要快。但是Update明显能减少代码量,便于维护。至于在Update的时候,你可以通过dataAdapter的updating或者是updated事件来控制其他表。
    SqlDataAdapter custDA = new SqlDataAdapter("SELECT CustomerID, CompanyName FROM Customers", nwindConn);// Add handlers.
    custDA.RowUpdating += new SqlRowUpdatingEventHandler(OnRowUpdating);
    custDA.RowUpdated += new SqlRowUpdatedEventHandler(OnRowUpdated);// Set DataAdapter command properties, fill the DataSet, and modify the DataSet.custDA.Update(custDS, "Customers");// Remove handlers.
    custDA.RowUpdating -= new SqlRowUpdatingEventHandler(OnRowUpdating);
    custDA.RowUpdated -= new SqlRowUpdatedEventHandler(OnRowUpdated);protected static void OnRowUpdating(object sender, SqlRowUpdatingEventArgs args)
    {
      if (args.StatementType == StatementType.Delete)
      {
        System.IO.TextWriter tw = System.IO.File.AppendText("Deletes.log");
        tw.WriteLine("{0}: Customer {1} Deleted.", DateTime.Now, args.Row["CustomerID", DataRowVersion.Original]);
        tw.Close();
      }
    }protected static void OnRowUpdated(object sender, SqlRowUpdatedEventArgs args)
    {
      if (args.Status == UpdateStatus.ErrorsOccurred)
      {
        args.Row.RowError = args.Errors.Message;
        args.Status = UpdateStatus.SkipCurrentRow;
      }
    }
      

  3.   

    DataSet的Update的时候内部执行的是单行插入呢?还是一次全部更新呢?
      

  4.   

    建议你用存储过程,DataSet的Update 最好不要用,我个人意见
      

  5.   

    搞不清楚为什么很多人把update跟存储过程对立起来了,
    Update 跟存储过程并不矛盾,Update的InsertCommand,UpdateCommand...都可以使用存储过程。
      

  6.   

    <我能在存储过程里做一些对其它表的处理>
    多表处理:
    http://blog.csdn.net/chengking/archive/2005/10/03/494717.aspxhttp://blog.csdn.net/chengking/archive/2005/08/26/465874.aspx
      

  7.   

    还真没用过update,不知道好不好用?学习