Insertar registros de un XML a una base de datos MySql desde C#

agosto 14 2010Un comentario

Guardado en : Microsoft, Programación

Tenemos un archivo XML con la siguiente estructura en la cual cada nodo <item> representa un registro que será leído para ser mandado a la base de datos.

<?xml version="1.0" encoding="UTF-8" ?>
 
<resultados>
 
 <item>
 
  <cve>134</cve>
 
  <nombre>CALCULADORA</nombre>
 
  <precio>30</precio>
 
  <existencia>15</existencia>
 
 </item>
  <item>
 
  <cve>144</cve>
 
  <nombre>PINTURA</nombre>
 
  <precio>7,5</precio>
 
  <existencia>40</existencia>
 
</item>
 
<item>
 
  <cve>165</cve>
 
  <nombre>PINTURAS</nombre>
 
  <precio>12</precio>
 
  <existencia>40</existencia>
 
</item>
 
<item>
 
  <cve>194</cve>
 
  <nombre>PLASTILINA</nombre>
 
  <precio>7,5</precio>
 
  <existencia>200</existencia>
 
</item>
 
<item>
 
  <cve>217</cve>
 
  <nombre>PLASTILINA</nombre>
 
  <precio>18,75</precio>
 
  <existencia>1160</existencia>
 
  </item>
 
<item>
 
</resultados>

La clase LeeXML() cuenta con un método llamado obtenerRegistro() que se encarga de leer los nodos hijos de <item> y organizarlos para formar el registro actual que será mandado a la base de datos

class LeeXML
 
    {
 
        public string obtenerRegisto()
 
        {
 
            Consultas inserta = new Consultas();
 
            XmlDocument xDoc = new XmlDocument(); //variable que representa un documento XML y me diante la cueal podemos trabajar
 
            xDoc.Load("registros.xml");
 
            XmlNodeList resultados = xDoc.GetElementsByTagName("resultados"); //obtenemos una lista de todos los nodos que descendientes de el nodo "conexion"
 
            XmlNodeList listaDatos = ((XmlElement)resultados[0]).GetElementsByTagName("item");
 
            string registro = "";
 
            foreach (XmlElement nodo in listaDatos)
 
            {
 
                XmlNodeList nCve = nodo.GetElementsByTagName("cve");                 XmlNodeList nNombre = nodo.GetElementsByTagName("nombre");
 
                XmlNodeList nPrecio = nodo.GetElementsByTagName("precio");
 
                XmlNodeList nExistencia = nodo.GetElementsByTagName("existencia");
 
                registro = string.Format("'{0}', '{1}', '{2}', '{3}'", nCve[0].InnerText, nNombre[0].InnerText, nPrecio[0].InnerText, nExistencia[0].InnerText);
 
                inserta.insertaRegistros(registro); //Llamos el metodo insertarRegistros() de la clase Consultas() y se le pasa la variable registro con los campos a agregar
 
            }
 
            return registro;
 
        }
 
    }

En la clase Consultas() se encuentra el metodo insertaRegistro() el cual recibe un string que representa los valores que seran pasados a un INSERT.

Es necesario descargar e instalar una librería para poder interactuar C# con MySql, en el siguiente enlace lo podras descargar http://dev.mysql.com/downloads/connector/net/

Ya que lo descargamos y lo instalamos es necesario agregar una referencia a dicha librería para esto vamos a Menú Proyecto > Agregar referencia…

Seleccionamos la pestaña Examinar y vamos a la siguiente ruta C:\Archivos de programa\MySQL\MySQL Connector Net 5.2.7\Binaries\.NET 2.0 y seleccionamos el archivo MySql.Data.dll. La versión puede varia dependiendo cual descargues.

Es necesario agregar los siguientes namespace

using MySql.Data.MySqlClient;
using MySql.Data;
class Consultas
 
    {
 
        private string cadenaConexion;
 
        private string comandoInsertar;
 
        private MySqlConnection conexion;
 
        private MySqlCommand comando;
 
        public void insertaRegistros(string registro)
 
        {
 
            cadenaConexion = "DataBase=resultados; DataSource=localhost; Port=3306; User=root; Password=xxxxx";
 
            comandoInsertar = string.Format("INSERT INTO ITEMS VALUES({0})", registro);
 
            conexion = new MySqlConnection (cadenaConexion);
 
            conexion.Open();
 
            comando = new MySqlCommand (comandoInsertar, conexion);
 
            comando.ExecuteNonQuery();
 
            conexion.Close();
 
        }
 
    }
Espero y les sirva de ayuda, Saludos...

Quizá te interese :

Acerca del autor:

Una respuesta a “Insertar registros de un XML a una base de datos MySql desde C#”

Deja un comentario


Licencia y uso

Las técnicas demostradas en los tutoriales pueden ser utilizadas sin ninguna limitación y tampoco es obligatorio dar una atribución.


Los textos, imágenes y tutoriales son propiedad de sus respectivos autores, nuestro contenido se encuentra bajo licencia Creative Commons Share-Alike.

Escribe algo para el sitio

El escribir un tutorial o un artículo, mandarnos un enlace para Ubicuos, no solamente es una forma de obtener publicidad, si no también de dar algo a la comunidad y nosotros te lo recompensamos con los premios del mes! Leer más de nuestras promociones

¿Sugerencias?

Este es TU sitio, si tienes sugerencias o ideas de cómo podemos mejorarlo para ti, ¡Por favor háznoslos saber!

Hacemos nuestro mayor esfuerzo en proporcionar un sitio útil y amigable y esperamos que disfrutes tu tiempo aquí.

Ayuda a Difundir

Te gusta Ubicuos?

Ve las formas en que nos puedes apoyar.

Apoyando a Ubicuos.com

Submit your linkClose

-->