- using System;
- using System.IO;
- using System.Collections.Generic;
- using System.Linq;
- using System.Data;
- using System.Text;
- using System.Runtime.Serialization.Formatters.Binary;
- namespace SimpleDataSet
- {
- class Program
- {
- static void Main(string[] args)
- {
- Console.Write("***** Fun with DataSets *****/n");
- DataSet carsInventoryDS = new DataSet("Car Inventory");
- carsInventoryDS.ExtendedProperties["TimeStamp"] = DateTime.Now;
- carsInventoryDS.ExtendedProperties["DataSetID"] = Guid.NewGuid();
- carsInventoryDS.ExtendedProperties["Company"] = "Intertech Training";
- DataColumn carIDColumn = new DataColumn("CarID", typeof(int));
- carIDColumn.Caption = "Car ID";
- carIDColumn.ReadOnly = true;
- carIDColumn.AllowDBNull = false;
- carIDColumn.Unique = true;
- carIDColumn.AutoIncrement = true;
- carIDColumn.AutoIncrementSeed = 0;
- carIDColumn.AutoIncrementStep = 1;
- DataColumn carMakeColumn = new DataColumn("Make", typeof(string));
- DataColumn carColorColumn = new DataColumn("Color", typeof(string));
- DataColumn carPetNameColumn = new DataColumn("PetName", typeof(string));
- carPetNameColumn.Caption = "Pet Name";
- DataTable inventroyTable = new DataTable("Inventroy");
- inventroyTable.Columns.AddRange(new DataColumn[]
- {carIDColumn,carMakeColumn,carColorColumn,carPetNameColumn});
- DataRow carRow = inventroyTable.NewRow();
- inventroyTable.PrimaryKey =new DataColumn[] {inventroyTable.Columns[0]};
- carRow["Make"] = "BMW";
- carRow["Color"] = "Black";
- carRow["PetName"] = "Hamlet";
- inventroyTable.Rows.Add(carRow);
- carRow = inventroyTable.NewRow();
- carRow[1] = "Saab";
- carRow[2] = "Red";
- carRow[3] = "Sea Breeze";
- inventroyTable.Rows.Add(carRow);
- ManipulateDataRowState();
- carsInventoryDS.Tables.Add(inventroyTable);
- DataColumn CustomIdColumn = new DataColumn("CustomId", typeof(int));
- CustomIdColumn.Caption = "CustomId ID";
- CustomIdColumn.ReadOnly = true;
- CustomIdColumn.AllowDBNull = false;
- CustomIdColumn.Unique = true;
- CustomIdColumn.AutoIncrement = true;
- CustomIdColumn.AutoIncrementSeed = 1987;
- CustomIdColumn.AutoIncrementStep = 1;
- DataColumn firstColumn = new DataColumn("FirstName", typeof(string));
- DataColumn lastColumn = new DataColumn("LastName", typeof(string));
- firstColumn.Caption = "First Name";
- DataTable CustomTable = new DataTable("Custom");
- CustomTable.Columns.AddRange(new DataColumn[] {CustomIdColumn, firstColumn, lastColumn });
- DataRow customRow = CustomTable.NewRow();
- CustomTable.PrimaryKey = new DataColumn[] { CustomTable.Columns[0] };
- customRow["FirstName"] = "xue";
- customRow["LastName"] = "yong";
- CustomTable.Rows.Add(customRow);
- customRow = CustomTable.NewRow();
- customRow[1] = "zhang";
- customRow[2] = "chuang";
- CustomTable.Rows.Add(customRow);
- ManipulateDataRowState();
- carsInventoryDS.Tables.Add(CustomTable);
- PrintDataset(carsInventoryDS);
- foreach (DataTable dt in carsInventoryDS.Tables)
- PrintTable(dt);
- DataSetAsXml(carsInventoryDS);
- DataSetAsBinary(carsInventoryDS);
- }
- static void DataSetAsBinary(DataSet carsInventoryDS)
- {
- carsInventoryDS.RemotingFormat = SerializationFormat.Binary;
- FileStream fs = new FileStream("BinaryCars.bin", FileMode.Create);
- BinaryFormatter bFormat = new BinaryFormatter();
- bFormat.Serialize(fs, carsInventoryDS);
- fs.Close();
- carsInventoryDS.Clear();
- fs = new FileStream("BinaryCars.bin", FileMode.Open);
- DataSet data = (DataSet)bFormat.Deserialize(fs);
- }
- static void DataSetAsXml(DataSet carsInventoryDS)
- {
- carsInventoryDS.WriteXml("carsDataSet.xml");
- carsInventoryDS.WriteXmlSchema("carsDataSet.xsd");
- carsInventoryDS.Clear();
- carsInventoryDS.ReadXml("carsDataSet.xml");
- }
- static void PrintDataset(DataSet ds)
- {
- Console.WriteLine("DatasSet is named :{0}", ds.DataSetName);
- foreach (System.Collections.DictionaryEntry de in ds.ExtendedProperties)
- {
- Console.WriteLine("Key ={0},Value ={1}", de.Key, de.Value);
- }
- foreach (DataTable dt in ds.Tables)
- {
- Console.WriteLine("->{0}Table:", dt.TableName);
- for (int curCol = 0; curCol < dt.Columns.Count; curCol++)
- {
- Console.Write(dt.Columns[curCol].ColumnName + "/t/t");
- }
- Console.WriteLine("/n-------------------------------");
- for (int curRow = 0; curRow < dt.Rows.Count; curRow++)
- {
- for (int curCol = 0; curCol < dt.Columns.Count; curCol++)
- {
- Console.Write(dt.Rows[curRow][curCol].ToString() + "/t/t");
- }
- Console.WriteLine();
- }
- }
- }
- static void PrintTable(DataTable dt)
- {
- DataTableReader dtReader = dt.CreateDataReader ();
- while (dtReader.Read())
- {
- for(int i=0;i<dtReader.FieldCount;i++)
- {
- Console.WriteLine("{0}/t",dtReader.GetValue(i).ToString().Trim());
- }
- Console.WriteLine();
- }
- dtReader.Close();
- }
- private static void ManipulateDataRowState()
- {
- DataTable temp = new DataTable("Temp");
- temp.Columns.Add(new DataColumn("TempColumn",typeof(int)));
- DataRow row =temp.NewRow();
- Console.WriteLine("After Calling NewRow(): {0}",row.RowState);
- temp.Rows.Add(row);
- Console.WriteLine("After Calling Rows.add():{0}",row.RowState);
- row["TempColumn"]=10;
- Console.WriteLine("After first assignment: {0}",row.RowState);
- temp.AcceptChanges();
- Console.WriteLine("After Calling AcceptChanges: {0}",row.RowState);
- row["TempColumn"] =11;
- Console.WriteLine("After first modify:{0}",row.RowState);
- temp.Rows[0].Delete();
- Console.WriteLine("After Calling Delete:{0}",row.RowState);
- }
- }
- }