using System;
using System.Data;
using System.IO;
namespace ConsoleApplication1
{ class Program
{ static void Main()
{ //Serialize the sample data
var ds = InitDataSource();
var dataXml = SerializeData(ds).ToString();
var schemaXml = SerializeSchema(ds).ToString();
//Example of bad order
var dsBad = new DataSet();
dsBad.ReadXml(new StringReader(dataXml));
dsBad.ReadXmlSchema(new StringReader(schemaXml));
Console.WriteLine("Bad Example Result:");
try
{ Console.WriteLine(
string.Format("{0}:{1} {2:N2}", (int)dsBad.Tables[0].Rows[0][0], //Will throw exception here
dsBad.Tables[0].Rows[0][1],
(decimal)dsBad.Tables[0].Rows[0][2]));
}
catch (Exception ex)
{ Console.WriteLine(ex.Message);
}
Console.WriteLine();
//Example of good order
var dsGood = new DataSet();
dsGood.ReadXmlSchema(new StringReader(schemaXml));
dsGood.ReadXml(new StringReader(dataXml));
Console.WriteLine("Good Example Result:"); Console.WriteLine(
string.Format("{0}:{1} {2:N2}", (int)dsGood.Tables[0].Rows[0][0],
dsGood.Tables[0].Rows[0][1],
(decimal)dsGood.Tables[0].Rows[0][2]));
Console.WriteLine();
Console.WriteLine("Press any key..."); Console.ReadLine();
}
private static StringWriter SerializeSchema(DataSet ds)
{ using (var sw = new StringWriter())
{ ds.WriteXmlSchema(sw);
return sw;
}
}
private static StringWriter SerializeData(DataSet ds)
{ using (var sw = new StringWriter())
{ ds.WriteXml(sw);
return sw;
}
}
private static DataSet InitDataSource()
{ var ds = new DataSet("Foo");
//Setup Sample DataTable
var dt = new DataTable("Bar"); dt.Columns.Add("Id", typeof (int)); dt.Columns.Add("Description", typeof (string)); dt.Columns.Add("Price", typeof (decimal));
//Populate with Sample Data
dt.Rows.Add(1, "Banana", 6.05m);
ds.Tables.Add(dt);
return ds;
}
}
}