scrivere dati xml su server sql usando sqlbulkcopy in C # asp.net

c# sqlbulkcopy sql-server xml

Domanda

Ho due file xml sul sistema m chiamati customers.xml e customerdetails.xml. Sto tentando di scrivere questi dati direttamente in un database SQL creato in asp.net. Tutta la mia codifica è in C #. Il database sql contiene una tabella denominata CustomerDetails che contiene i campi CustomerID, CustomerN, CustomerLN, CustomerAdd, CustomerTelNo e Commenti.

In asp.net ho creato una pagina chiamata update che contiene un controllo upload che sto cercando di ottenere il file xml e di scrivere i dati nel database. Il codice per il controllo è il seguente:

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.";
        }
    }
}

}

Tuttavia, quando tento di ottenere il file, visualizzo un errore che dice impossibile trovare la tabella [0];

Qualcuno può aiutarmi a identificare qual è il problema qui !!

Risposta popolare

È necessario un modo per ottenere i dati XML nel DataSet prima di poter chiamare .Tables [0]. Prova a utilizzare la funzione .ReadXml() della classe DataSet per caricare i dati nel set di dati:

DA: 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);

Quindi dovresti essere in grado di chiamare sbc.WriteToServer(reportData.Tables[0]); nessun problema.



Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché