InicioArticulos y noticiasBases de datosProgramaciónForosInternetServiciosContratacionEmail
También puedes ver ...
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
Cómo activar Intelisense (autocompletado) en el Web.config
TripleDES - Un ejemplo practico en C#

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


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: 6617 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.




Visitas: 135 | Comentarios: 0 | Archivo: Articulos
Categorias: Visual Basic .NET|C#|ASP.NET|ASP.NET|Programación|ADO.NET
27/09/2008 Navegando ....
Visitas: 59 | Comentarios: 0 | Archivo: Articulos
Categorias: Humor
Visitas: 172 | Comentarios: 0 | Archivo: Articulos
Categorias: Visual Basic .NET|C#|ASP.NET|ASP.NET|Programación|WCF
Visitas: 712 | Comentarios: 0 | Archivo: Articulos
Categorias: C#
Visitas: 178 | Comentarios: 0 | Archivo: Articulos
Categorias: JavaScript|ASP.NET
Visitas: 624 | Comentarios: 0 | Archivo: Articulos
Categorias: Windows XP|Linux|Windows Vista
Visitas: 405 | Comentarios: 0 | Archivo: Articulos
Categorias: Linux|BSD
Visitas: 215 | Comentarios: 0 | Archivo: Articulos
Categorias: Programación|Actualidad
18/08/2008 SQL Server 2008
Visitas: 1032 | Comentarios: 1 | Archivo: Articulos
Categorias: Transact-SQL
Visitas: 732 | Comentarios: 0 | Archivo: Articulos
Categorias: C#|ADO.NET|LinQ

Útimos temas recibidos en los foros ...
COASTAL VACATIONS MEJORA TU ECONOMIA por benigno ... [Access] 0 06/10/2008
OPORTUNIDAD DE NEGOCIO COASTAL VACATIONS por benigno ... [Actualidad] 0 06/10/2008
COASTAL VACATIONS REVOLUCION COMERCIAL por benigno ... [C#] 0 06/10/2008
COASTAL VACATIONS NEGOCIO por benigno ... [C#] 0 06/10/2008
Pasar el contenido de un dataGrid a Excel por Minguial ... [C#] 4 06/03/2008
Crear una sesion de inicio por jhors ... [ASP.NET] 1 06/10/2008
Enviar email a correos cmo hotmail por Cajami ... [C#] 13 06/09/2007
Como mandar mensaje a Celular por Pako ... [C#] 23 13/03/2007
Casting por sara ... [Java] 1 06/10/2008
ORA-22288: file or LOB operation GetLength failed por heroga ... [ORACLE] 1 05/08/2008
Galeria de imagenes en Visual Web Developer por luis ... [ASP.NET] 0 06/10/2008
utilizar un ObjectDataSource por mari90 ... [ASP.NET] 4 25/10/2006

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 ...
24/05/2006 Cursores Implicitos en PL/SQL    forma parte de...Tutorial PL/SQL
17/01/2008 Insertar en una Tabla usando Linq2SQL (Linq To SQL)
16/08/2007 Operaciones con conjuntos.    forma parte de...Tutorial de Transact SQL
19/08/2006 Vitualización. Maquinas Virtuales.
12/01/2006 Programación con PL/SQL    forma parte de...Tutorial PL/SQL
26/07/2006 Secuencias    forma parte de...Tutorial PL/SQL
03/01/2007 Tipos anulables    forma parte de...Tutorial C#
10/07/2006 Funciones en PL/SQL    forma parte de...Tutorial PL/SQL
23/05/2006 Cursores en PL/SQL    forma parte de...Tutorial PL/SQL
22/10/2005 Introducción SQL    forma parte de...Tutorial SQL

 

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