>public void UpdateMyData(DataSet ds) >{ > // The same applies for the Update. It's not necessary to Open/Close the connection. > SqlDataAdapter da = new SqlDataAdapter("select * from bob", this.oConnection); > SqlCommandBuilder sb = new SqlCommandBuilder(da); > > da.Update(ds); >} >>Or you can create the various update commands yourself instead of using the CommandBuilder:
>public void UpdateMyData(DataSet ds) >{ > > SqlCommand sc = new SqlCommand(); > sc.Connection = this.oConnection; > da = new SqlDataAdapter(sc); > > da.InsertCommand = new SqlCommand("Insert into bob (xyz, abc) VALUES ( @xyz, @abc )", sc.Connection); > da.InsertCommand.Parameters.Add("@xyz", SqlDbType.Int, 8, "xyz"); > da.InsertCommand.Parameters.Add("@abc", SqlDbType.VarChar, 50, "abc"); > > // do the same for da.DeleteCommand & da.UpdateCommand > > da.Update(ds); >} >>Or, you can take total control, not use the da.Update() and do it all yourself (this is basically the same code that gets done behind the scenes by the da.Update() method:
>public void UpdateMyData(DataSet ds) >{ > SqlCommand sc = new SqlCommand(); > sc.Connection = this.oConnection; > sc.Connection.Open(); > foreach (DataRow Row in ds.Tables[0].Rows) > { > switch (Row.RowState) > { > case DataRowState.Added : > sc.CommandText = "Insert into bob (xyz, abc) VALUES ( @xyz, @abc )"; > sc.Parameters.Clear(); > sc.Parameters.Add("@xyz", Row["xyz"]); > sc.Parameters.Add("@abc", Row["abc"]); > sc.ExecuteNonQuery(); > break; > > // Do the same for DataRowState Deleted and Modified > case DataRowState.Deleted : > break; > case DataRowState.Modified : > break; > } > } > sc.Connection.Close(); >} >>