[dba-VB] What to do, what to do?

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?
> 



More information about the dba-VB mailing list