Insertar registros de un XML a una base de datos MySql desde C#
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 :
Leer archivos XML desde C# XML, siglas en inglés de Extensible Markup Language (lenguaje extens ...
Obtener el Diccionario de datos de una Tabla de MySql con C# INFORMATION_SCHEMA MySql guarda l ...
Que es un ORM. El mapeo objeto-relacional (más conocido por su nombre en inglés, Object-Relatio ...









[...] http://www.ubicuos.com/2010/08/14/insertar-registros-de-un-xml-a-una-base-de-datos-mysql-desde-c/ August 15, 2010 // MySQL // No Comments // [...]