InicioArticulos y noticiasBases de datosProgramaciónForosInternetServiciosContratacionEmail
También puedes ver ...
Fijar el encabezado de un GridView con ASP.Net y CSS
SET IDENTITY_INSERT ON y LinqToSQL
Creando cadenas de conexión ConnectionStrings en .net 3.5 o visual Studio 2008 usando SqlConnectionStringBuilder
Migración de WSE a WCF (Web Services de 2005 a 2008)
Generar archivos PDF con C#
Reemplazar __doPostBack
SQL Server 2008
TransactionScope - Simplificando el trabajo con transacciones.
LinQ To SQL - Un ejemplo sencillo
Formatear números en SQL Server

Afiliados
La Web del programador
MundoProgramacion


 

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 Xml

set @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


 Versión para imprimir  Foros de consulta

 
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
Autor:

Título:


Para preguntar utiliza los foros.



 Versión para imprimir

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
Categorias: ASP.NET|CSS|ASP.NET
Visitas: 137 | Comentarios: 0 | Archivo: Articulos
Categorias: TFS
Visitas: 101 | Comentarios: 5 | Archivo: Articulos
Categorias: TFS
Visitas: 430 | Comentarios: 4 | Archivo: Articulos
Categorias: Transact-SQL|LinQ
Visitas: 1449 | Comentarios: 6 | Archivo: Articulos
Categorias: Visual Basic .NET|C#|ASP.NET|ASP.NET|Programación|ADO.NET
27/09/2008 Navegando ....
Visitas: 239 | Comentarios: 0 | Archivo: Articulos
Categorias: Humor
Visitas: 611 | Comentarios: 0 | Archivo: Articulos
Categorias: Visual Basic .NET|C#|ASP.NET|ASP.NET|Programación|WCF
Visitas: 2577 | Comentarios: 4 | Archivo: Articulos
Categorias: C#
Visitas: 464 | Comentarios: 0 | Archivo: Articulos
Categorias: JavaScript|ASP.NET
Visitas: 1072 | Comentarios: 0 | Archivo: Articulos
Categorias: Windows XP|Linux|Windows Vista

Útimos temas recibidos en los foros ...
replicacion de datos por jade ... [SQL Server] 0 21/11/2008
Enviar un email con C# utilizando .Net FrameWork 2.0 con logo... por Moises ... [ASP.NET] 1 21/11/2008
Crystal reports XI Release 2 y asp.net por mvargas ... [ASP.NET] 0 21/11/2008
Enviar un email con C# utilizando .Net FrameWork 2.0 por Moises ... [C#] 0 21/11/2008
Cuestión de BFILE. por Megatron ... [ORACLE] 0 21/11/2008
Enviar email por Dol ... [ASP.NET] 5 21/08/2007
*******PREGUNTA********: por T.S.U.En Informatíca ... [Visual Basic 6.0] 5 17/03/2008
Programar tareas en oracle. por Rodrigo ... [ORACLE] 0 21/11/2008
fechas con datatimepicker por peyin ... [Visual Basic .NET] 3 20/11/2008
agregar datos de un gridview a un textbox por jhors ... [ASP.NET] 3 19/09/2007
Select de sql en c# por Stuart ... [C#] 1 20/11/2008
Manual en Español de SQL Navigator for Oracle por Maira ... [ORACLE] 12 30/03/2008

Access CGI JSP ORACLE UNIX
Actualidad HTML/DHTML/XHTML LINUX PHP Visual Basic .NET
ASP ISAPI MS DOS Power Builder Visual Basic 6.0
ASP.NET Java mySQL SQL WIN 98/NT/2000/XP
C# JavaScript Opinion SQL Server

devjoker  Te recomendamos además ...
27/08/2007 Enviar email con C#
19/10/2005 Una clase sencilla para encriptar cadenas
28/06/2006 Excepciones en PL/SQL    forma parte de...Tutorial PL/SQL
22/10/2005 Vistas    forma parte de...Tutorial SQL
22/10/2005 El lenguaje SQL    forma parte de...Tutorial SQL
27/10/2006 Eventos    forma parte de...Tutorial C#
23/05/2006 Cursores en PL/SQL    forma parte de...Tutorial PL/SQL
24/05/2006 Cursores Explicitos en PL/SQL    forma parte de...Tutorial PL/SQL
22/10/2005 Indices    forma parte de...Tutorial SQL
12/01/2006 Introducción a PLSQL    forma parte de...Tutorial PL/SQL

 

Encuesta
¿A que perfil te adaptas mejor?
[Ver] [Votar]