 |
|
 |
Como leer un campo XML de SQL Server 2005 con C#
El soporte nativo a XML de SQL Server 2005 es una de las caracteristicas más interesantes de la verisón. Cuando empezamos a trabajar con Xml nos encontramos con el problema de como leer los datos guardados en formato Xml de la base de datos, es decir, como obtener una instancia de XmlDocument a partir de una consulta a la base de datos.
Para este ejemplo, lo primero que vamos a necesitar es una tabla con un campo de tipo Xml, para ello ejecutamos el siguiente script en nuestra base de datos.
CREATE TABLE TABLA_CON_XML( Id int identity not null, CampoXml Xml,CONSTRAINT PK_TABLA_CON_XML PRIMARY KEY (Id))
|
Para grabar datos en la tabla anterior necesitamos una segunda tabla con el objetivo de realizar una consulta posterior con la clausula FOR XML de SQL Server 2005. La creamos con el siguiente script:
CREATE TABLE INFO( Id int identity not null,DbName varchar(100),UserName varchar(100),FxAlta datetime,CONSTRAINT PK_INFO PRIMARY KEY (Id))
GO INSERT INTO INFO SELECT DB_NAME(), USER_NAME(), GETDATE()
|
Con esto, grabamos un registro en nuestra tabla utilizando para ello una consulta con la clausula FOR XML.
DECLARE @Xml Xmlset @Xml = (SELECT * FROM INFO FOR XML AUTO, elements)INSERT INTO TABLA_CON_XML( CampoXml) VALUES (@Xml) GO
SELECT * FROM TABLA_CON_XML
|
La consulta debe haber generado un Xml como el que se muestra a continuación.
< info>< Id>1</Id>< DbName>PRUEBAS</DbName>< UserName>dbo</UserName>< FxAlta>2007-08-13T11:07:11.077</FxAlta>
</info> |
Ahora ya podemos escribir el código C# necesario para acceder a la base de datos y recuperar el Xml.
Lo primero que debemos hacer es importar los namespaces necesarios para trabajar con SQL Server y Xml.
using System.Data.SqlClient;using System.Data.SqlTypes;using System.Xml;
|
Para el ejemplo, hemos realizado una sencilla aplicación Windows en la que a través de una botón leemos el Xml de la base de datos y lo guardamos en disco.
private void button1_Click(object sender, EventArgs e) { XmlDocument doc = new XmlDocument(); string qs = @"Data Source=10.74.4.100; Initial Catalog=PRUEBAS; Persist Security Info=True; User ID=sa;Password=xxxxxxxx"; SqlConnection conexion = new SqlConnection(qs); conexion.Open(); LoadXml(conexion, doc); conexion.Close(); doc.Save("C:\\OutputXml.xml");
}
|
El código anterior, únicamente crea una instancia de XmlDocument y una conexion a nuestra base de datos. Es el método LoadXml el que realmente accede a la base de datos y obtiene el Xml.
A continuación se muestra el método LoadXml:
protected bool LoadXml(SqlConnection cn, XmlDocument doc) { //Leemos el Xml de la base de datos. string sql = @"SELECT Id, CampoXml FROM TABLA_CON_XML WHERE Id = @Id" ; SqlCommand cm = new SqlCommand(sql,cn); cm.Parameters.Add( new SqlParameter("@Id",1));using (SqlDataReader dr = cm.ExecuteReader()){ if (dr.Read()){ SqlXml mixml = dr.GetSqlXml(dr.GetOrdinal("CampoXml")); doc.LoadXml( mixml.Value); return true;
} else { return false;} } } |
Este método consulta la base de datos con un objeto SqlDataReader y almacena el resultado en una variable del tipo SqlXml (perteneciente al namespace System.Data.SqlTypes). Con este tan solo queda cargar nuestra instancia de XmlDocument con el valor del Xml leido de la base de datos a través de LoadXml.
Como podemos ver, trabajar con C#, Xml y SQL Server 2005 es bastante sencillo.
Saludos, DJK |
| |
 |
universitario
por
salomon
Respuesta recibida el [17/08/2007 11:05:00]
|
 |
oye sera que me podrias alludar a crear un programas, porfabor necesito de tu ayuda, te estare muy agradesido.
mi correo misterio394@homtial.com
919 10 260 31
|
| |
 |
C# abrir un BLOB
por
Juan Amilcar
Respuesta recibida el [25/09/2007 10:23:46]
|
 |
COMO PUEDO ABRIR UN ARCHIVO QUE SE ENCUENTRA EN UN BLOB DE BASE DE DATOS SQL Server
|
| |
 |
buscar patrones de texto en un archivo pdf
por
jheny
Respuesta recibida el [06/12/2007 06:37:08]
|
 |
Por inico estoy haciendo una biblioteca Virtual mis preguntas son:
Que librerias me permiten leer pdf rtf en ASP.NET en aplicaciones web.
Segundo con dichas lbrerias como guardo en un campo blob de SQL SERVER 2005 luego como creo un index fulltext(buscar la documentación de SQL) sobre la columna blob ( hacer busquedas como si fuera google...)
te rogaria me ayudes por favor mi correo es janecita01@gmail.com
|
| |
 |
Caso inverso...
por
Makoky
Respuesta recibida el [29/02/2008 09:23:03]
|
 |
como crearias un insert en una base de datos leyendo los datos necesarios de un fichero xml?
|
| |
 |
ayuda
por
ingrid
Respuesta recibida el [23/05/2008 02:45:03]
|
 |
ocupamos hacer una entrega de esto..ayudanossssssssss plsssssss
|
| |
 |
Para preguntar los foros
por
aldeamedia
Respuesta recibida el [25/05/2008 06:29:54]
|
 |
No nos cansamos de repetirlo, para preguntas usar los foros, esto es para comentar los articulos
|
| |
 |
existe Existe en SQL Server 2005 o Superior un bucle For ej: For i = 1 to 10
por
enmanuel almonte
Respuesta recibida el [24/06/2008 10:07:16]
|
 |
me es urgente please
|
| |
 |
re: como crearias un insert en una base de datos leyendo los datos necesarios de un fichero xml?
por
Victor
Respuesta recibida el [25/06/2008 09:37:33]
|
 |
-- creo una tabla con una columna del tipo XML Create table tablaXML (xmlCol XML)
-- inserto el archivo XML BULK INSERT tablaXML FROM 'c:\archivo.xml'
-- declaramos variables necesarias Declare @xxx xml declare @xml int set @xxx = (select * from tablaXML)
-- este procedimiento prepara el xml para ser leido EXEC sp_xml_preparedocument @xml OUTPUT, @xxx
INSERT INTO tablaFinal ( id, campo1, campo2 ) Select * from OPENXML(@xml, '/elemento_root/primer_nodo', 2) WITH ( -- estos campos deben llamarse igual que las etiquetas del XML id int, campo1 varchar(10), campo2 varchar(50) )
|
| |
 |
Error en conex.open y LoadXml
por
Erick
Respuesta recibida el [26/06/2008 05:50:26]
|
 |
He hecho todo lo que dicta el artículo y consigo este error:
Request for the permission of type 'System.Data.SqlClient.SqlClientPermission, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e0089' failed.
alguien sabe porqué y como solucionarlo?
|
| |
 |
XML - SQL 2005
por
MArcelo
Respuesta recibida el [10/07/2008 12:17:47]
|
 |
ECELENTE... ME sirvio ENE
|
| |
 |
urgentee
por
claudia
Respuesta recibida el [17/07/2008 05:12:16]
|
 |
creo que me servira de mucho esto.....esto me piden favor de ayudar es urgente!!!!!
1. Diseñar servicios funcionales para comunicar dos sistemas finales (BACK END´s) que son bases de datos una base de datos relacional SQL Server 2005 y la otra base de de datos XML Nativa como DB Berkeley. 2. Aplicar la tecnología XML para la integración de estos dos sistemas. Debe pasarse datos entre ellos en formato XML a través de un mapeo definido por una estructura del esquema de documentos XML o DTD y las tablas que recepcionan los datos y viceversa.
|
| |
 |
AYUDA CON INSERT A MYSQL DESDE UN FORM
por
MARCELINO
Respuesta recibida el [22/08/2008 11:31:20]
|
 |
TENGO EL SIGUIENTE CODIGO string insertSQL = "INSERT INTO table (idalumno, respuesta, idejercicio) VALUES (@mat, @res, @eje)";
Y SI GRABA PERO NO TOMA LOS VALORES DE LAS VARIABLES ME PODRAN DAR ALGUN TIP GRACIAS
|
| |
 |
Gracias por el ejemplo
por
mi
Respuesta recibida el [19/10/2008 11:40:40]
|
 |
Saludos, he estado busca que busca en Internet información sobre SQL xml y c# y solo los ejemplos que has puesto me han servido. No se si has publicado más ejemplos y yo no los he visto, será que si es así podrías poner los links, y será que podrías hacer algún ejemplillo que involucre dataset y datagrid.
Gracias
|
| Añadir comentario ... |
Para preguntar utiliza los foros
|
|

|
Leer un campo XML de SQL Server 2005 con C# |
|
Autor:
Pedro Herrarte Sánchez
|
|
Visitas:
7728 |
Fecha de publicación:
29/04/2008 |
Pedro Herrarte, es consultor independiente, ofreciendo servicios de consultoría, análisis, desarrollo y formación.
Posee mas de diez años de experiencia trabajando para las principales empresas de España.
Es especialista en tecnologías .NET, entornos Web, bases de datos (SQL Server y ORACLE) e integración de sistemas.
Es experto en desarrollo (C#, ASP.NET, VB.Net, T-SQL, PL/SQL, , ASP, CGI , C, Pro*C, Java, Essbase, Vignette, PowerBuilder y Visual Basic ...) y bases de datos (SQL Server y ORACLE).
Es fundador, diseñador y programador de www.devjoker.com. |
|
Visitas:
305
|
Comentarios:
0
|
Archivo:
Articulos
|
Visitas:
137
|
Comentarios:
0
|
Archivo:
Articulos
|
Visitas:
101
|
Comentarios:
5
|
Archivo:
Articulos
|
Visitas:
430
|
Comentarios:
4
|
Archivo:
Articulos
|
Visitas:
1449
|
Comentarios:
6
|
Archivo:
Articulos
|
Visitas:
239
|
Comentarios:
0
|
Archivo:
Articulos
|
Visitas:
611
|
Comentarios:
0
|
Archivo:
Articulos
|
Visitas:
2577
|
Comentarios:
4
|
Archivo:
Articulos
|
Visitas:
464
|
Comentarios:
0
|
Archivo:
Articulos
|
Visitas:
1072
|
Comentarios:
0
|
Archivo:
Articulos
|
|
|
|
 |
| Encuesta |
|
¿A que perfil te adaptas mejor? |
|
|
|
|
|
|
|
|
 |