我想使用C#将XML文件导入到SQL表中。问题是SQL DataSet正在返回一个值,但由于某些原因,它并未将这些值放入SQL DataTable中。这里是我的代码:SQL DataTable不返回SQL数据集值C#
using(SqlConnection con = new SqlConnection(connString))
{
ds.ReadXml(Server.MapPath("~/state.xml"));
DataTable dt = new DataTable();
dt = ds.Tables["state"];
con.Open();
using(SqlBulkCopy bc = new SqlBulkCopy(con))
{
bc.DestinationTableName = "StateIncorporated";
bc.ColumnMappings.Add("name", "State");
bc.ColumnMappings.Add("abbreviation", "Abbreviation");
bc.ColumnMappings.Add("country_id", "Country_ID");
bc.WriteToServer(dt);
}
}
我已经使用这个完全相同的代码约上几个小时前与另一个XML文件,它完美地工作。这个新的XML文件的写法与之前的相同。当我在Visual Studio中调试并检查DataSet中的值时,它是正确的。所以一切都是正确的,但没有工作,这是令人沮丧的。任何帮助深表感谢。
我看到2个东西错可以通过改变以下 'ds.ReadXML(使用Server.Mappath( “〜state.xml”),XmlReadMode.InferSchema)改变这种;'' DT = dsTables [0 ];'也当你,但在代码中断点..'ds'有一个初始值..?如果是这样,那么数据集的表为'0',因此您可以通过dataset.Tables [0]来访问它,因为如果您确实需要显示相关/相关代码,您从未给出表名。 – MethodMan
完美!这工作,但它为什么以前使用相同的确切代码,但阅读不同的XML文件?如果您发布答案,我会将其标记为答案。 – bds89
这是因为您试图通过名称为“state”的名称来访问DataSets.DataTable,该名称看起来并不像您命名的那样,因此您需要通过默认访问“ds.Tables [0]”来执行此操作,因为您不要指定'XML Schema'你需要使用'XmlReadMode.InferSchema'来确定模式,假设xml已经被正确格式化,但是我没有遇到任何使用这个惯例的问题 – MethodMan