Shamil Salakhetdinov
shamil at smsconsulting.spb.ru
Fri Nov 13 11:22:31 CST 2009
John, Yes, of course you can have multiple DataTable(s) in a DataSet - I have just posted a very simple sample - one of a myriad possible combinations, the simplest one probably. And of course you can have your DataSet(s) structure created statically in VS designer. Yes, I think your plan is OK. You probably do not need a DataReader but if you'll find you need one - in P.S. is a simple sample. In fact Gustav knows DataSets better than I do - please address your questions to him also and to everybody else here - I will not have time to reply any more postings today... Thank you. -- Shamil P.S. DataReader sample: using System; using System.Collections.Generic; using System.Text; using System.Data; using System.Data.SqlClient; namespace TestConsole.Samples { public class SqlDataReaderTest { 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(); // Create empty [NewShippers] dataset in memory string sql1 = "select * from [NewShippers] where(1=0)"; SqlCommand command = new SqlCommand(sql1, connection); SqlDataAdapter adapter = new SqlDataAdapter(command); DataSet newDataSet = new DataSet("NewShippers"); adapter.Fill(newDataSet); // Load source [Shippers] in memory string sql = "select * from [Shippers]"; command = new SqlCommand(sql, connection); SqlDataReader dataReader = command.ExecuteReader(); // Add loaded [Shippers] to [NewShippers] im memory Console.WriteLine("*** dataReader ***"); while (dataReader.Read()) { object[] items = { dataReader[0], dataReader[1], dataReader[2] }; newDataSet.Tables[0].Rows.Add(items); Console.WriteLine("{0} {1} {2}", items[0], items[1], items[2]); } dataReader.Close(); // ! always close DataReader // Insert [NewShippers] into db (new SqlCommand("delete from [NewShippers]",connection)) .ExecuteNonQuery(); SqlCommandBuilder builder = new SqlCommandBuilder(adapter); adapter.InsertCommand = builder.GetInsertCommand(true); adapter.Update(newDataSet.Tables[0]); // Check that [NewShippers] were inserted OK Console.WriteLine("*** newDataSet ***"); newDataSet.Clear(); adapter = new SqlDataAdapter( new SqlCommand("select * from [NewShippers]",connection)); adapter.Fill(newDataSet); foreach (DataRow dataRow in newDataSet.Tables[0].Rows) { Console.WriteLine("{0} {1} {2}", dataRow[0], dataRow[1], dataRow[2]); } } } } } <<< snip to get through dba-VB robot >>> __________ Information from ESET NOD32 Antivirus, version of virus signature database 4604 (20091113) __________ The message was checked by ESET NOD32 Antivirus. http://www.esetnod32.ru