jwcolby
jwcolby at colbyconsulting.com
Fri Nov 13 06:51:36 CST 2009
Shamil, That is precisely what I have in mind, with variations. Then at the end, write all updates back to SQL Server. Thanks for the demo code, always helpful. John W. Colby www.ColbyConsulting.com Shamil Salakhetdinov wrote: > Hi John -- > > Here is a sample: > > using System; > using System.Collections.Generic; > using System.Text; > > using System.Data; > using System.Data.SqlClient; > > namespace TestConsole.Samples > { > public class DataSetTests > { > public static void Run() > { > string connectionString = "Data Source=HAMBURG\\SQL2005;"+ > "Initial Catalog=Northwind;User Id=sa;Password=N/A"; > using (SqlConnection connection = > new SqlConnection(connectionString)) > { > connection.Open(); > string sql = "select * from [Shippers]"; > string sql1 = "select * from [NewShippers] where(1=0)"; > SqlCommand command = new SqlCommand(sql, connection); > SqlDataAdapter adapter = new SqlDataAdapter(command); > > DataSet dataSet = new DataSet("Shippers"); > adapter.Fill(dataSet); > > command = new SqlCommand(sql1, connection); > adapter = new SqlDataAdapter(command); > DataSet newDataSet = new DataSet("NewShippers"); > adapter.Fill(newDataSet); > > Console.WriteLine("*** newDataSet ***"); > foreach (DataRow dataRow in newDataSet.Tables[0].Rows) > { > Console.WriteLine("{0} {1}", dataRow[0], dataRow[1]); > } > > Console.WriteLine("*** dataSet ***"); > foreach (DataRow dataRow in dataSet.Tables[0].Rows) > { > // This row already belongs to another table. > //newDataSet.Tables[0].Rows.Add(dataRow); > > object[] items = { dataRow[0], dataRow[1], dataRow[2] }; > newDataSet.Tables[0].Rows.Add(items); > > Console.WriteLine("{0} {1}", dataRow[0], dataRow[1]); > } > > Console.WriteLine("*** newDataSet ***"); > foreach (DataRow dataRow in newDataSet.Tables[0].Rows) > { > Console.WriteLine("{0} {1}", dataRow[0], dataRow[1]); > } > > newDataSet.Tables[0].TableName = "NewShippers"; > SqlCommandBuilder builder = new SqlCommandBuilder(adapter); > adapter.InsertCommand = builder.GetInsertCommand(true); > adapter.Update(newDataSet.Tables[0]); > } > } > > } > } > > > Thank you. > > --Shamil > > -----Original Message----- > From: dba-vb-bounces at databaseadvisors.com > [mailto:dba-vb-bounces at databaseadvisors.com] On Behalf Of jwcolby > Sent: Thursday, November 12, 2009 8:23 PM > To: VBA > Subject: [dba-VB] What to do, what to do? > > I am writing an application in C# to merge records (previously discussed). > It looks pretty simple, > all things considered. Get data into a dataset object which will contain > about 4 tables. Then use > the records and fields collections of the recordset to iterate through the > fields building up a > record (or modifying the first record of a small set of records - the > dupes). Copy a record from > one table into another table inside of the dataset. Delete records in a > table in the dataset. Etc. > Etc all without going back out to the actual data tables on SQL Server until > the very end when I > will do an update back to the live data. > > Am I correct in assuming here that I can programmatically append records > from one table in the > dataset to another record in the dataset? Delete records in the tables in > the dataset? Update > records in tables in the dataset? All "in memory" without connecting back > to the live data in the > database? > > Is there anything I need to know before I launch into this? >