Cursores o conjunto de datos

27/08/2004 - 18:16 por Bárbara González | Informe spam
Saludos al grupo

Estoy aprendiendo y a la vez desarrollando una aplicacion en C# con
SQLSERVER pero he tenido problemas de rendimiento y el mayor numero de
consejos que recibo es el de no usar CURSORES y en vez de ellos use CONJUNTO
DE DATOS, bueno el caso es que no se que es cada cosa, asi que publico una
seccion de mi codigo a ver que estoy usando o un cursor o un conjunto de
datos.

GRacias

System.Data.SqlClient.SqlConnection x_coneccion = new
System.Data.SqlClient.SqlConnection(coneccion);

System.Data.SqlClient.SqlCommand x_comando = new
System.Data.SqlClient.SqlCommand(

"SELECT * FROM _usuarios " +

"WHERE (nick = @Nick) AND (clave = @Clave)",x_coneccion);

x_comando.Parameters.Add("@Nick" , SqlDbType.VarChar,20).Value = nick;

x_comando.Parameters.Add("@Clave", SqlDbType.VarChar,20).Value = clave;

x_coneccion.Open();

System.Data.SqlClient.SqlDataReader x_data = x_comando.ExecuteReader();

if (x_data.Read())

{

x_resultado.id = x_data.GetSqlInt32(0).Value;

x_resultado.nombre = x_data.GetSqlString(1).Value;

x_resultado.nick = x_data.GetSqlString(2).Value;

x_resultado.clave = x_data.GetSqlString(3).Value;

x_resultado.vence = x_data.GetSqlDateTime(4).Value;

x_resultado.estado = x_data.GetSqlString(5).Value;

x_resultado.nc = x_nc.Nc(x_data.GetSqlString(6).Value);

}



Bye

BG

Preguntas similare

Leer las respuestas

#6 Alfredo Novoa
28/08/2004 - 17:01 | Informe spam
On Fri, 27 Aug 2004 16:28:09 -0500, "Antonio Andrés Avila Moreno"
wrote:

P.D. Un cursor es en realidad un subconjunto de datos



Por supuesto que no. Un cursor es un puntero lógico que apunta a un
registro de un conjunto de datos.

Los cursores sirven para acceder a los registros individualmente y se
usan con lenguajes que no están preparados para trabajar con conjuntos
de datos como C#.

Si buscamos la palabra cursor en el diccionario vemos claramente que
no tiene nada que ver con un conjunto de datos y que es una marca
movil.

cursor.
(Del lat. cursor, -oris, corredor).
1. m. Electr. Marca movible, por lo común luminosa, en forma de
circulito, flecha o signo semejante, que sirve como indicador en la
pantalla de diversos aparatos, p. ej., de un computador.
2. m. Mec. Pieza pequeña que se desliza a lo largo de otra mayor en
algunos aparatos.
3. m. ant. Escribano de diligencias.
4. m. ant. correo (? hombre que tiene por oficio llevar la
correspondencia).

http://buscon.rae.es/diccionario/drae.htm


Saludos
Alfredo
Respuesta Responder a este mensaje
#7 Antonio Andrés Avila Moreno
28/08/2004 - 21:24 | Informe spam
Alfredo,
Ya me extrañaba que no dijera alguna tonteria (llamese asi por no decir
palabras mayores). Te contesto para que las personas que realmente toman
este grupo en serio sepan que solo criticas al aire. Cultivate, si tienes el
Microsoft SQL Server (y no es pirata), lee el apartado, que se encuentra en
SQL Server Books Online. la ruta donde lo puedes encontrar es SQL Server
Arquitecture->Relational Database Engine Architecture->Cursor Architecture

Cursor Architecture
All SQL statements operate on a set of rows. A SELECT statement returns a
complete result set containing all the rows that meet the qualifications in
the SELECT statement. Applications need to process the result set one row or
block of rows at a time. Cursors are a logical extension to result sets that
let applications work with the result set row by row.

y por si no sabes ingles...

Todas las declaraciones del SQL funcionan en un conjunto de filas. Una
declaración SELECT devuelve un completo resultado que contiene, todas las
filas que califican en la declaración SELECT. Hay aplicaciones que necesitan
el conjunto de dato procesados por fila o conjunto de renglones al mismo
tiempo. Los cursores son una extensión lógica a a un conjunto de resultados
que dejan el trabajo de la aplicaciones se procesen fila por fila.

Ahora obtenido de tu diccionario

subconjunto.

1. m. Mat. Conjunto de elementos que pertenecen a otro conjunto.


y si tomamos que "Los cursores son una extensión lógica a a un conjunto de
resultados" entonces un cursor es un subconjunto de datos.

P.D. La palabra gigabyte no aparece en tu diccionario, por lo tanto, para ti
todavia no existe la epoca en que los gigabytes de información existen??

=P


Saludos ...

Antonio Andrés Avila Moreno
Qualtia Alimentos
Microsoft Certified Professional
Microsoft Certified Trainner
Mexico
"Alfredo Novoa" escribió en el mensaje
news:
On Fri, 27 Aug 2004 16:28:09 -0500, "Antonio Andrés Avila Moreno"
wrote:

>P.D. Un cursor es en realidad un subconjunto de datos

Por supuesto que no. Un cursor es un puntero lógico que apunta a un
registro de un conjunto de datos.

Los cursores sirven para acceder a los registros individualmente y se
usan con lenguajes que no están preparados para trabajar con conjuntos
de datos como C#.

Si buscamos la palabra cursor en el diccionario vemos claramente que
no tiene nada que ver con un conjunto de datos y que es una marca
movil.

cursor.
(Del lat. cursor, -oris, corredor).
1. m. Electr. Marca movible, por lo común luminosa, en forma de
circulito, flecha o signo semejante, que sirve como indicador en la
pantalla de diversos aparatos, p. ej., de un computador.
2. m. Mec. Pieza pequeña que se desliza a lo largo de otra mayor en
algunos aparatos.
3. m. ant. Escribano de diligencias.
4. m. ant. correo (? hombre que tiene por oficio llevar la
correspondencia).

http://buscon.rae.es/diccionario/drae.htm


Saludos
Alfredo
Respuesta Responder a este mensaje
#8 Alfredo Novoa
29/08/2004 - 05:10 | Informe spam
On Sat, 28 Aug 2004 14:24:28 -0500, "Antonio Andrés Avila Moreno"
wrote:

Alfredo,
Ya me extrañaba que no dijera alguna tonteria (llamese asi por no decir
palabras mayores). Te contesto para que las personas que realmente toman
este grupo en serio sepan que solo criticas al aire.



Además de ignorante no tienes valor para reconocer un error.

All SQL statements operate on a set of rows. A SELECT statement returns a
complete result set containing all the rows that meet the qualifications in
the SELECT statement. Applications need to process the result set one row or
block of rows at a time. Cursors are a logical extension to result sets that
let applications work with the result set row by row.



Es decir, lo mismo que he dicho yo pero mucho peor explicado. Un
cursor es un puntero lógico que permite a las aplicaciones acceder de
una en una a las filas de un conjunto de filas.

Esto concuerda con el significado de la palabra cursor: una marca que
podemos ir moviendo para ir señalando elementos de forma secuencial.
En algunos diccionarios cursor aparece como sinónimo de puntero y de
indicador (nos indica por que fila vamos).

Además, la teoría de bases de datos o de cualquier otra cosa no se
aprende en un manual de un producto comercial que te da solo el punto
de vista que le interesa al fabricante. Deberías leer algún libro
serio sobre el tema para evitar volver a hacer el ridículo.

Por ejemplo en la referencia estandar "An Introduction to Database
Systems 8º Ed." en la página 94 dice:

Un cursor consiste esencialmente en una clase de puntero (lógico) -un
puntero en la aplicación, esto es, no en la base de datos- que puede
ser usado para recorrer una colección de filas apuntando a una de las
filas de cada vez proporcionando por lo tanto accesibilidad a las
filas de una en una.

y si tomamos que "Los cursores son una extensión lógica a a un conjunto de
resultados" entonces un cursor es un subconjunto de datos.



Has interpretado de forma erronea una frase torpemente escrita.

No deberías confiar tanto en los manuales de productos comerciales y
deberías de consultar más de una fuente.

Por ejemplo el Free On-line Dictionary of Computing dice:

cursor

2. <database> In SQL, a named control structure used by an
application program to point to a row of data. The position
of the row is within a table or view, and the cursor is
used interactively so select rows from columns.

Que también concuerda con la definición de cursor como apuntador o
indicador y es incompatible con lo de que un cursor es un conjunto de
datos.

P.D. La palabra gigabyte no aparece en tu diccionario,



gigabyte no aparece en el diccionario pero es una palabra compuesta y
giga y byte si aparecen en el diccionario.

por lo tanto, para ti
todavia no existe la epoca en que los gigabytes de información existen??



Eso es una estupidez que no viene a cuento.

Estás demostrando no ser digno de consideración.
Respuesta Responder a este mensaje
#9 Antonio Andrés Avila Moreno
29/08/2004 - 06:04 | Informe spam
Si no tomas en serio el manual tecnico del fabricante entonces que haces
usando su producto!!!


Saludos ...

Antonio Andrés Avila Moreno
Qualtia Alimentos
Microsoft Certified Professional
Mexico
"Alfredo Novoa" escribió en el mensaje
news:
On Sat, 28 Aug 2004 14:24:28 -0500, "Antonio Andrés Avila Moreno"
wrote:

>Alfredo,
>Ya me extrañaba que no dijera alguna tonteria (llamese asi por no decir
>palabras mayores). Te contesto para que las personas que realmente toman
>este grupo en serio sepan que solo criticas al aire.

Además de ignorante no tienes valor para reconocer un error.

>All SQL statements operate on a set of rows. A SELECT statement returns a
>complete result set containing all the rows that meet the qualifications


in
>the SELECT statement. Applications need to process the result set one row


or
>block of rows at a time. Cursors are a logical extension to result sets


that
>let applications work with the result set row by row.

Es decir, lo mismo que he dicho yo pero mucho peor explicado. Un
cursor es un puntero lógico que permite a las aplicaciones acceder de
una en una a las filas de un conjunto de filas.

Esto concuerda con el significado de la palabra cursor: una marca que
podemos ir moviendo para ir señalando elementos de forma secuencial.
En algunos diccionarios cursor aparece como sinónimo de puntero y de
indicador (nos indica por que fila vamos).

Además, la teoría de bases de datos o de cualquier otra cosa no se
aprende en un manual de un producto comercial que te da solo el punto
de vista que le interesa al fabricante. Deberías leer algún libro
serio sobre el tema para evitar volver a hacer el ridículo.

Por ejemplo en la referencia estandar "An Introduction to Database
Systems 8º Ed." en la página 94 dice:

Un cursor consiste esencialmente en una clase de puntero (lógico) -un
puntero en la aplicación, esto es, no en la base de datos- que puede
ser usado para recorrer una colección de filas apuntando a una de las
filas de cada vez proporcionando por lo tanto accesibilidad a las
filas de una en una.

>y si tomamos que "Los cursores son una extensión lógica a a un conjunto


de
>resultados" entonces un cursor es un subconjunto de datos.

Has interpretado de forma erronea una frase torpemente escrita.

No deberías confiar tanto en los manuales de productos comerciales y
deberías de consultar más de una fuente.

Por ejemplo el Free On-line Dictionary of Computing dice:

cursor

2. <database> In SQL, a named control structure used by an
application program to point to a row of data. The position
of the row is within a table or view, and the cursor is
used interactively so select rows from columns.

Que también concuerda con la definición de cursor como apuntador o
indicador y es incompatible con lo de que un cursor es un conjunto de
datos.

>P.D. La palabra gigabyte no aparece en tu diccionario,

gigabyte no aparece en el diccionario pero es una palabra compuesta y
giga y byte si aparecen en el diccionario.

>por lo tanto, para ti
>todavia no existe la epoca en que los gigabytes de información existen??

Eso es una estupidez que no viene a cuento.

Estás demostrando no ser digno de consideración.




Respuesta Responder a este mensaje
#10 Antonio Andrés Avila Moreno
29/08/2004 - 06:13 | Informe spam
Sabes, ya que dices que soy un ignorante, por que no le pedimos la opinion a
varios del grupo sobre nuestra discusion, sobre todo de quienes son los que
han proporcionado mas ayuda a los participantes de aqui y que considero que
tienen un punto de vista valorado ante el producto. Porque en el producto,
primero porque estamos en un grupo de microsoft y segundo por que es el
producto de SQL y no de todos los productos del mundo. Como ves?? crees
tener la razon?? si tu la tienes yo la aceptare como titulo del asunto. Vas
o no vas?


Saludos ...

Antonio Andrés Avila Moreno
Qualtia Alimentos
Microsoft Certified Professional
Mexico
"Alfredo Novoa" escribió en el mensaje
news:
On Sat, 28 Aug 2004 14:24:28 -0500, "Antonio Andrés Avila Moreno"
wrote:

>Alfredo,
>Ya me extrañaba que no dijera alguna tonteria (llamese asi por no decir
>palabras mayores). Te contesto para que las personas que realmente toman
>este grupo en serio sepan que solo criticas al aire.

Además de ignorante no tienes valor para reconocer un error.

>All SQL statements operate on a set of rows. A SELECT statement returns a
>complete result set containing all the rows that meet the qualifications


in
>the SELECT statement. Applications need to process the result set one row


or
>block of rows at a time. Cursors are a logical extension to result sets


that
>let applications work with the result set row by row.

Es decir, lo mismo que he dicho yo pero mucho peor explicado. Un
cursor es un puntero lógico que permite a las aplicaciones acceder de
una en una a las filas de un conjunto de filas.

Esto concuerda con el significado de la palabra cursor: una marca que
podemos ir moviendo para ir señalando elementos de forma secuencial.
En algunos diccionarios cursor aparece como sinónimo de puntero y de
indicador (nos indica por que fila vamos).

Además, la teoría de bases de datos o de cualquier otra cosa no se
aprende en un manual de un producto comercial que te da solo el punto
de vista que le interesa al fabricante. Deberías leer algún libro
serio sobre el tema para evitar volver a hacer el ridículo.

Por ejemplo en la referencia estandar "An Introduction to Database
Systems 8º Ed." en la página 94 dice:

Un cursor consiste esencialmente en una clase de puntero (lógico) -un
puntero en la aplicación, esto es, no en la base de datos- que puede
ser usado para recorrer una colección de filas apuntando a una de las
filas de cada vez proporcionando por lo tanto accesibilidad a las
filas de una en una.

>y si tomamos que "Los cursores son una extensión lógica a a un conjunto


de
>resultados" entonces un cursor es un subconjunto de datos.

Has interpretado de forma erronea una frase torpemente escrita.

No deberías confiar tanto en los manuales de productos comerciales y
deberías de consultar más de una fuente.

Por ejemplo el Free On-line Dictionary of Computing dice:

cursor

2. <database> In SQL, a named control structure used by an
application program to point to a row of data. The position
of the row is within a table or view, and the cursor is
used interactively so select rows from columns.

Que también concuerda con la definición de cursor como apuntador o
indicador y es incompatible con lo de que un cursor es un conjunto de
datos.

>P.D. La palabra gigabyte no aparece en tu diccionario,

gigabyte no aparece en el diccionario pero es una palabra compuesta y
giga y byte si aparecen en el diccionario.

>por lo tanto, para ti
>todavia no existe la epoca en que los gigabytes de información existen??

Eso es una estupidez que no viene a cuento.

Estás demostrando no ser digno de consideración.




Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida