2011-12-07 14 views
0

我有一个XML文档和一个SQL(MS 2005)表,我从中生成了两个数据集。数据集具有不同的模式,SQL表基本上是XML的子集。我得到的数据到数据库如下:通过数据集将XML转换为SQL

dataSet.ReadXml(xmlStream); 
var ta = new TableAdapter(); 
foreach(var r in dataSet.Tables["MyTable"].Rows) 
{ 
ta.Insert( DateTime.Parse(r["date1"].ToString()), 
     int.Parse(r["num"].ToString()), 
     DateTime.Parse(r["date2"].ToString()), 
     DateTime.Parse(r["date3"].ToString()) 
    ); 
} 

我相当通过传递完整的XML到数据库和做的工作有诱惑,但我敢肯定,必须有映射更合适的方法两个数据集之间的列并将数据复制到代码中(特别是不必将'datetime'转换为字符串并再次转换为'datetime')。任何人有任何建议?

回答

0

您可以创建一个哈希表的对应数据表列类型存储 用于例如

TypeMap = new Hashtable(); 
    TypeMap[typeof(UInt64)] = SqlInt64 
    TypeMap[typeof(Boolean)] = SqlBoolean      
    ... 

,创造e.g GetTypeForData(DataColumn column, object value) 功能和返回System.Data.SqlTypes中

没有代码,但一个想法。