Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL DataTable未返回SQL数据集值C#_C#_Sql Server_Xml_Datatable_Ado.net - Fatal编程技术网

SQL DataTable未返回SQL数据集值C#

SQL DataTable未返回SQL数据集值C#,c#,sql-server,xml,datatable,ado.net,C#,Sql Server,Xml,Datatable,Ado.net,我正在尝试使用C#将XML文件导入SQL表。问题在于,SQL数据集正在返回一个值,但由于某些原因,它没有将这些值放入SQL数据表中。这是我的密码: using(SqlConnection con = new SqlConnection(connString)) { ds.ReadXml(Server.MapPath("~/state.xml")); DataTable dt = new DataTable(); dt = ds.Tables["state"];

我正在尝试使用C#将XML文件导入SQL表。问题在于,SQL数据集正在返回一个值,但由于某些原因,它没有将这些值放入SQL数据表中。这是我的密码:

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文件的编写方式与之前的相同。当我在VisualStudio中调试并检查数据集中的值时,它是正确的。因此,一切都是正确的,但没有工作,这是令人沮丧的。非常感谢您的帮助。

我发现有两件事不对,您可以通过更改以下内容来改变这一点:
ds.ReadXML(Server.MapPath(“~state.xml”)、XmlReadMode.InferSchema)
dt=dsTables[0]也可以在代码中添加断点。。
ds
是否有初始值。。?如果是这样,那么数据集的表是基于
0
的,因此您可以通过数据集访问它。表[0]`因为您从未给ds提供过表名,如果您这样做了,请同时显示相关/相关的代码。太好了!这是可行的,但为什么它以前使用相同的代码,但读取不同的XML文件?如果您发布答案,我会将其标记为答案。这是因为您试图以“state”的名称访问DataSets.DataTable,而该名称与您命名的名称不同,因此您需要以默认访问方式进行访问,即
ds.Tables[0]
并且由于您没有指定
XML模式
,因此需要使用
XmlReadMode.InferSchema
来确定模式,假设XML已正确格式化,但使用此方法我没有遇到任何问题。请注意,有两件事不对,您可以通过更改以下
ds.ReadXML来更改此模式(Server.MapPath(“~state.xml”);XmlReadMode.InferSchema);
dt=dsTables[0];
也可以在代码中设置断点。
ds
是否有初始值。。如果有,则数据集的表基于
0
所以您可以通过数据集访问它。表[0]`既然你从来没有给ds一个表名,如果你给了,那么请也显示相关/相关的代码。太好了!但是为什么它以前使用相同的代码但读取不同的XML文件工作?如果你发布答案,我会将其标记为答案。这是因为你试图以“state”的名称访问DataSets.DataTable它看起来不像是您命名的,因此您需要使用默认访问权限进行操作,即
ds.Tables[0]
由于您没有指定
XML模式
,因此需要使用
XmlReadMode.InferSchema
来确定模式,假设XML格式正确,但使用这种方法我没有遇到任何问题非常感谢您的帮助。我真的很感激。没问题。我看到了immed谢天谢地,我最近遇到了这个,我很高兴能帮上忙。非常感谢你的帮助。我真的很感激。没问题。我马上就明白了谢天谢地,我在很高兴能帮上忙之前遇到了这个。
ds.ReadXML(Server.MapPath("~state.xml"), XmlReadMode.InferSchema); 
dt = ds.Tables[0];