在C#asp.net中使用sqlbulkcopy将xml数据写入sql server

c# sqlbulkcopy sql-server xml

我在m系统上有两个名为customers.xml和customerdetails.xml的xml文件。我试图将这些数据直接写入我在asp.net中创建的sql数据库。我的所有编码都在C#中。 sql数据库包含一个名为CustomerDetails的表,其中包含CustomerID,CustomerN,CustomerLN,CustomerAdd,CustomerTelNo和Comments字段。

在asp.net中,我创建了一个名为update的页面,其中包含一个上载控件,我试图获取xml文件并将数据写入数据库。控件的代码如下:

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Sql;
using System.Data.SqlClient;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace WebApplication9
{
public partial class WebForm1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
if (FileUpload1.HasFile)
{
string fileExt = System.IO.Path.GetExtension(FileUpload1.FileName);
if (fileExt == ".xml")
{
try
{
DataSet reportData = new DataSet();
SqlConnection connection = new SqlConnection(@"Data Source=.\SQLEXPRESS;  
AttachDbFilename=|DataDirectory|\CustomerDetails.mdf;Integrated  
Security=True;User Instance=True");
SqlBulkCopy sbc = new SqlBulkCopy(connection);
sbc.DestinationTableName = "CustomerInfo";
connection.Open();
sbc.WriteToServer(reportData.Tables[0]);
}
catch (Exception ex)
{
 Label1.Text = "ERROR: " + ex.Message.ToString();
 }
 }
 else
 {
                Label1.Text = "Only .xml files allowed!";
            }
        }
        else
        {
            Label1.Text = "You have not specified a file.";
        }
    }
}

}

但是,当我尝试获取文件时,我收到的错误是无法找到表[0];

任何人都可以帮我确定问题在这里!!

热门答案

在调用.Tables [0]之前,您需要一些方法将XML数据放入DataSet。尝试使用DataSet类的.ReadXml()函数将数据加载到数据集中:

来自: http//msdn.microsoft.com/en-us/library/fx29c3yd( v= VS.100).aspx

DataSet dataSet = new DataSet();
DataTable dataTable = new DataTable("table1");
dataTable.Columns.Add("col1", typeof(string));
dataSet.Tables.Add(dataTable);

string xmlData = "<XmlDS><table1><col1>Value1</col1></table1><table1><col1>Value2</col1></table1></XmlDS>";

System.IO.StringReader xmlSR = new System.IO.StringReader(xmlData);

dataSet.ReadXml(xmlSR, XmlReadMode.IgnoreSchema);

然后你应该能够调用sbc.WriteToServer(reportData.Tables[0]);没问题。



许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因
许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因