InicioArticulos y noticiasBases de datosProgramaciónForosInternetServiciosContratacionEmail
También puedes ver ...
SQL Server 2008
TransactionScope - Simplificando el trabajo con transacciones.
LinQ To SQL - Un ejemplo sencillo
Formatear números en SQL Server
Cómo activar Intelisense (autocompletado) en el Web.config
TripleDES - Un ejemplo practico en C#
Mostrar un GridView dentro de un DataList
String.Format
Métodos Extensores: INNER JOIN
Sitios Web de ejemplo ASP.NET

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.


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: 5600 Fecha de publicación: 29/04/2008
Pedro Herrarte, es consultor independiente, ofreciendo sercivios 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.




18/08/2008 SQL Server 2008
Visitas: 39 | Comentarios: 0 | Archivo: Articulos
Categorias: Transact-SQL
Visitas: 131 | Comentarios: 0 | Archivo: Articulos
Categorias: C#|ADO.NET|LinQ
Visitas: 161 | Comentarios: 1 | Archivo: Articulos
Categorias: Humor
Visitas: 154 | Comentarios: 0 | Archivo: Articulos
Categorias: WCF
Visitas: 123 | Comentarios: 0 | Archivo: Articulos
Categorias: WCF
Visitas: 210 | Comentarios: 0 | Archivo: Articulos
Categorias: ASP.NET
Visitas: 278 | Comentarios: 5 | Archivo: Articulos
Categorias: ASP.NET
Visitas: 4990 | Comentarios: 4 | Archivo: Articulos
Categorias: C#|Transact-SQL|LinQ
Visitas: 602 | Comentarios: 1 | Archivo: Articulos
Categorias: Visual Studio
Visitas: 1402 | Comentarios: 1 | Archivo: Articulos
Categorias: Transact-SQL

Útimos temas recibidos en los foros ...
MAQUINAS VIRTUALES por victor ... [WIN 98/NT/2000/XP] 0 19/08/2008
Y lo mismo en WEB por systemat ... [C#] 1 18/08/2008
Manual del minicom de Linux con fotos. por Meta ... [UNIX] 4 17/08/2008
PROGRAMACION por JUANMA ... [Visual Basic .NET] 1 19/08/2008
Conectar ASP con B.D Informix por Franco ... [ASP] 9 02/05/2007
Codigo salir por Jazmin ... [ASP.NET] 1 18/08/2008
EXPORTAR DATOS A ARCHIVOS PLANOS. por WIX ... [ORACLE] 10 06/08/2007
formulario por artdark ... [C#] 2 04/08/2008
Codigo salir por Jazmin ... [ASP.NET] 0 18/08/2008
cambiar de modo un gried view por ivan ... [ASP.NET] 0 18/08/2008
ayuda urgente porfavor por vicancer ... [ASP.NET] 0 18/08/2008
pollo por hajaj ... [Actualidad] 1 15/08/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 ...
28/08/2006 Ubuntu en VmWare con VMware Tools
11/06/2008 Problemas con el diseñador Web de Visual Studio 2008
03/10/2006 Creación de objetos    forma parte de...Tutorial C#
23/05/2006 Cursores en PL/SQL    forma parte de...Tutorial PL/SQL
09/10/2006 Cadenas de texto    forma parte de...Tutorial C#
20/07/2006 Transacciones con PL/SQL    forma parte de...Tutorial PL/SQL
22/10/2005 Componentes del lenguaje SQL    forma parte de...Tutorial SQL
24/05/2006 Cursores Implicitos en PL/SQL    forma parte de...Tutorial PL/SQL
11/10/2006 Constantes    forma parte de...Tutorial C#
02/10/2006 Espacio de nombres distribuidos    forma parte de...Tutorial C#

 

Encuesta
Si trabajas con .NET ¿Que entorno utilizas?
[Ver] [Votar]