écriture de données XML sur un serveur SQL à l'aide de sqlbulkcopy en C # asp.net

c# sqlbulkcopy sql-server xml

Question

J'ai deux fichiers XML sur m système appelés clients.xml et customerdetails.xml. J'essaie d'écrire ces données directement dans une base de données SQL que j'ai créée dans asp.net. Tout mon codage est en C #. La base de données SQL contient une table appelée CustomerDetails contenant les zones CustomerID, CustomerN, CustomerLN, CustomerAdd, CustomerTelNo et Comments.

Dans asp.net, j'ai créé une page appelée update qui contient un contrôle de téléchargement dans lequel je tente d'obtenir le fichier XML et d'écrire les données dans la base de données. Le code pour le contrôle est le suivant:

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

}

Cependant, lorsque j'essaie d'obtenir le fichier, j'obtiens une erreur indiquant qu'il est impossible de trouver le tableau [0];

Quelqu'un peut-il m'aider à identifier le problème ici !!

Réponse populaire

Avant de pouvoir appeler .Tables [0], vous devez disposer d’un moyen d’obtenir vos données XML dans le DataSet. Essayez d’utiliser la fonction .ReadXml() de la classe DataSet pour charger les données dans votre ensemble de données:

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

Ensuite, vous devriez pouvoir appeler sbc.WriteToServer(reportData.Tables[0]); aucun problème.



Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi