Trabajar con DataSet ayuda

08/12/2006 - 05:18 por edcha | Informe spam
Estoy trabajando con un archivo xml y lo cargo asi
Ds_xml.ReadXml(Open_Xml) he podido trabajar con el sin ningun problema
pero me surge una pregunta ya que he encontrado dos codigos en este
grupo y es
¿Se puede cargar de otra manera el archivo? aqui les dejo los dos
codigos

Primero:
DataSet ds;
SqlDataAdapter da = new SqlDataAdapter("...conexión...","SELECT *
from LstLng");
da.Fill(ds);

Segundo:
//DataBaseconnection
string connectionstring System.Configuration.ConfigurationSettings.AppSettings["strxmlDs"];
OleDbConnection connstr = new OleDbConnection(connectionstring);
OleDbDataAdapter ada_xml = new OleDbDataAdapter("SELECT * from
LstLng",connstr);
ada_xml.Fill(Ds_xml);

En el caso del primero no lo he probado pero en el segundo el error que
me da es que el "connectionstring" no se inicializa.

Apreciaria mucho algun comentario solo para aprender

Grcaias

Preguntas similare

Leer las respuestas

#1 Alberto Poblacion
08/12/2006 - 10:39 | Informe spam
"edcha" wrote in message
news:
Primero:
DataSet ds;
SqlDataAdapter da = new SqlDataAdapter("...conexión...","SELECT * from
LstLng");



Están los argumentos al revés. Se pone primero la sentencia y segundo la
conexión. Y el constructor del dataadapter no recibe directamente como
string la conexión; hay que crear un SqlConnection:

SqlConnection cn = new SqlConnection("...conexion...");
SqlDataAdapter da = new SqlDataAdapter("Select...", cn);
da.Fill(ds);

Segundo:
string connectionstring > System.Configuration.ConfigurationSettings.AppSettings["strxmlDs"];
[...] el error que
me da es que el "connectionstring" no se inicializa.



Si no se inicializa, es que no le has metido correctamente en el
<AppSettings> dentro del .config de la aplicación el <Add key="strxmlDs"
value="...conexion..."/>.
Respuesta Responder a este mensaje
#2 edcha
09/12/2006 - 04:48 | Informe spam
Gracias Alberto por contestar de nuevo.
disculpa pero se me olvido poner que era el asunto sobre estos codigos
y es si se puede cargar solo parte de una tabla o algunos registros
solamente para no tener que cargar todo el archivo que tiene varias
tablas y muchos registros ya que con el siguiente codigo carga todo el
archivo en memoria.

DataSet ds = new DataSet();
ds.ReadXml(Open_Xml)

Si es posible cargar solo algunos registros o solo algunas tablas
podrias hacerme el favor de darme un ejemplo.

Muchas Gracias.
Respuesta Responder a este mensaje
#3 Alberto Poblacion
09/12/2006 - 21:32 | Informe spam
"edcha" wrote in message
news:
disculpa pero se me olvido poner que era el asunto sobre estos codigos
y es si se puede cargar solo parte de una tabla o algunos registros
solamente para no tener que cargar todo el archivo que tiene varias
tablas y muchos registros ya que con el siguiente codigo carga todo el
archivo en memoria.

DataSet ds = new DataSet();
ds.ReadXml(Open_Xml)

Si es posible cargar solo algunos registros o solo algunas tablas
podrias hacerme el favor de darme un ejemplo.



Asumo que el problema es que el XML es demasiado grande para cargarlo en
memoria, ya que en caso contrario lo más simple sería hacer el ReadXml como
lo estás haciendo y luego eliminar las tablas o registros que te sobren.
Otra alternativa sería cargar el archivo en un XmlDataDocument y usar el DOM
para borrar los datos que no te interesen, antes de extraer el DataSet del
XmlDataDocument, pero tiene el mismo problema: primero hay que cargar todos
los datos en memoria antes de borrar los que no te interesan.

La alternativa para no cargar todo en memoria es usar un XmlTextReader
para ir analizando el archivo nodo por nodo y quedándote con las partes que
te interesan, pero hay que programarlo entero paso a paso, y requiere
conocer a priori cómo es el Xml para saber qué es lo que te vas a encontrar
y con qué te quieres quedar.

Confirma, por favor, si efectivamente el Xml es demasiado grande para
cargarlo en memoria, ya que en un PC "normalito", digamos que con unos 512
MB de memoria, se puede cargar un archivo XML de unos cientos de megabytes,
y es raro que manejes archivos xml tan grandes. Si no es asi, y
efectivamente puedes cargarlo, entonces eliminar las tablas que te sobran es
tan sencillo como esto:
ds.Tables.RemoveAt(numerodetabla);

Y borrar los registros que te sobren:
ds.Tables[numerodetabla].Rows.RemoveAt(numerodefila);
Respuesta Responder a este mensaje
#4 edcha
09/12/2006 - 22:42 | Informe spam
Muchas gracias Alberto ya que tu repuestas me permiten entender que no
se puede trabajar como con una base de datos Access que es lo que yo
estaba pretendiendo.

Gracias por la ayuda
Respuesta Responder a este mensaje
#5 Alberto Poblacion
10/12/2006 - 11:01 | Informe spam
"edcha" wrote in message
news:
Muchas gracias Alberto ya que tu repuestas me permiten entender que no
se puede trabajar como con una base de datos Access que es lo que yo
estaba pretendiendo.



No, un simple archivo XML en disco no se brinda a hacer modificaciones,
inserciones, borrados, etc., ya que es un archivo de texto y cualquier
cambio en una parte del mismo requiere volver a escribir el archivo desde
esa parte en adelante, lo cual normalmente se hace cargando todo el archivo
en memoria, modificándolo, y volviéndolo a grabar en disco. Este proceso
solo es eficiente cuando el archivo es pequeño, pero no sirve para manejar
grandes volúmenes de datos como puedes haces con Access.

Si necesitas manipular grandes cantidades de XML, haciendo sobre él
búsquedas, inserciones, etc., puedes hacerlo con Sql Server 2005 (o Sql
Server Express), que tiene un tipo de campo que es XML y permite indexarlo y
hacer de todo con él, con gran eficiencia.
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida