7.6 Loading Data

There are three methods that can add new rows to the DataTable . The NewRow( ) method creates a new empty DataRow with the same schema as the DataTable . After creating the row, it can be added to the DataTable using the Add( ) method of the DataRowCollection :

 // create the target table DataTable dt = new DataTable("MyTable"); dt.Columns.Add("Column1", typeof(System.Int32)); dt.Columns.Add("Column2", typeof(System.String)); // create and add a new row to the table DataRow newrow = dt.NewRow(); newrow["Column1"] = 1; newrow["Column2"] = "Row 1"; dt.Rows.Add(newrow); 

The LoadDataRow( ) method takes an array of values and attempts to find a row with a matching primary key. If the primary key is found, the values replace the existing data for the row; otherwise a new row is added. The LoadDataRow( ) method takes a Boolean AcceptChanges argument. If the AcceptChanges value is true , AcceptChanges is called to accept all changes for both inserted and modified rows. If AcceptChanges is false , the DataRowState fields of newly added rows are marked as insertions, while changes to existing rows are marked as modifications.

The BeginLoadData( ) method turns off all constraints, notifications, and index maintenance for the DataTable while data is loaded; the EndLoadData( ) method turns them back on. Calling BeginLoadData( ) and EndLoadData( ) methods might result in performance improvements when adding a series of DataRows to the DataTable using the LoadDataRow( ) method. If there are constraint violations when the EndLoadData( ) method is called, a ConstraintException is raised. The following example illustrates these methods:

 // create the target table DataTable dt = new DataTable("MyTable"); dt.Columns.Add("Column1", typeof(System.Int32)); dt.Columns.Add("Column2", typeof(System.String)); // add two rows to the DataTable dt dt.BeginLoadData(); dt.LoadDataRow(new Object[]{1,"Row 1"}, false); dt.LoadDataRow(new Object[]{2,"Row 2"}, false); dt.EndLoadData(); 

Finally, the ImportRow( ) method accepts a DataRow object argument and either adds the row to the table or updates an existing row with a matching primary key in the table, using the existing schema and preserving the existing DataRowState of the row:

 // create the target table DataTable dt = new DataTable("MyTable"); dt.Columns.Add("Column1", typeof(System.Int32)); dt.Columns.Add("Column2", typeof(System.String)); DataRow newrow = dt.NewRow(); newrow["Column1"] = 1; newrow["Column2"] = "Row 1"; dt.Rows.ImportRow(newrow); 


ADO. NET in a Nutshell
ADO.NET in a Nutshell
ISBN: 0596003617
EAN: 2147483647
Year: 2005
Pages: 415

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net