¿Hay alguna forma de comprobar si estoy en el último registro? graciasComprueba si es el último registro en sqldatareader
Respuesta
utilizar este modelo para identificar y procesar la última fila de resultado:
if (reader.Read())
{
var loop = true;
while (loop)
{
//1. Here retrive values you need e.g. var myvar = reader.GetBoolean(0);
loop = reader.Read();
if (!loop)
{
//You are on the last record. Use values read in 1.
//Do some exceptions
}
else {
//You are not on the last record.
//Process values read in 1., e.g. myvar
}
}
}
Aparte de "no hay otro después", no. Esto puede significar que necesita almacenar en búfer la fila, tratar de leer, y luego mirar los datos almacenados en el búfer si resultó ser el último.
En muchos casos, cuando los datos son moderados y está construyendo un modelo de objeto de algún tipo, puede simplemente mirar los datos construidos, es decir, hacer un List<T>
de todas las filas al usar el lector, luego , mira la última fila en la lista.
Sí, pero no quiero pasar dos bucles. – wben
@wben si está en una lista, el bucle es increíblemente barato, o simplemente tiene acceso por indexador: 'list [list.Count-1]'. Por supuesto, el almacenamiento en memoria intermedia de la fila anterior es incluso más económico, pero más complejo. –
@wben para aclarar las cosas, en la respuesta aceptada, donde dice "// 1. Aquí recupera los valores que necesita, por ejemplo, var myvar = reader.GetBoolean (0);", eso es lo que quiero decir con "buffer the Rema, intente leer, luego mire los datos almacenados en el búfer si resultó ser el último ". El ejemplo del código lo hace más claro, por supuesto. –
Como usted sabe, un SQLDataReader no tiene una propiedad de "conteo de filas". Acabas de leer hasta EOF.
Sin embargo, un DataSet hace. Tal vez se puede sustituir un adaptador de datos y algún tipo de conjunto de datos o tabla:
para iterar a través de la SqlDataReader
:
SqlDataReader reader = ...;
while(reader.Read())
{
// the reader will contain the current row
}
No hay nada en la narración lector usted es la última fila. Si aún necesita llegar a la última fila, quizás almacenando los datos de la fila en una variable separada, puede obtener esos datos después de salir del ciclo.
Otras alternativas serían:
- para obtener los datos en un conjunto de datos/DataTable
- para almacenar los datos en una lista/matriz
- recuperar los datos en orden inverso (reescribir la consulta) , de modo que la primera fila sea la que quieras.
lector no es un enumerador no tiene MoveNext(). Primero debe solicitar enumerador, es decir, reader.GetEnumerator() –
@RamanZhylich: Tiene razón. Debe ser reader.Read(). ¡Fijo! (editó la publicación) –
Otra posibilidad sería poner la información en el conjunto de datos.
Estás leyendo los datos con una consulta. Vamos a llamarlo q. Utilice esta consulta en su lugar:
select row_number() over (order by (select NULL)) as seqnum,
count(*) over (partition by null) as numrecs
q.*,
from (<q>) q
order by seqnum
Ahora el último registro tiene SEQNUM = numrecs, que se puede probar en su aplicación.
Por cierto, esto supone que está recuperando los datos de una manera desordenada. Si desea realizar un pedido, coloque los criterios en la cláusula "ordenar por" para row_number().
Usted no puede hacer eso sin repetir siempre lo mismo es decir, ir a buscar el registro dos veces.Aquí es un método más corto
System.Data.DataTable dt = new System.Data.DataTable();
dt.Load(myDataReader);
int recordCount = dt.Rows.Count;
if(recordCount > 0)
{
if(dt.Rows[recordCount-1]["username"] == "wrong value")
throw new Exception("wrong value");
}
Escribí esta fuera de la mano por lo que no está probado pero ese es el enfoque
- 1. Comprueba si NSURL es el archivo local
- 2. Cómo obtener el último registro
- 3. Comprueba si el archivo es un archivo multimedia en C#
- 4. ¿Cómo determinar si un registro es el primero/último en una iteración?
- 5. javascript comprueba si img src es válido?
- 6. Comprueba si la imagen es JPEG
- 7. ¿Cómo seleccionar el último registro de una tabla en SQL?
- 8. Si se comprueba nulo
- 9. SqlDataReader averiguar si un campo de datos es anulable
- 10. SqlDataReader dentro de SqlDataReader
- 11. Azure Table Storage obtener el último registro
- 12. Comprueba si el atributo CoreData está vacío
- 13. ¿Cómo obtener el último registro de Sqlite?
- 14. Comprueba si el sistema tiene sonido C#
- 15. Comprueba si el intento uri está disponible
- 16. Comprueba si una variable es nula en plsql
- 17. Comprueba si un número es racional en Python
- 18. Comprueba si el elemento tiene dos clases
- 19. Cómo comprobar si SQLDataReader no tiene filas
- 20. Casillas de verificación en un ListView: cuando selecciono el primero, comprueba el último y viceversa
- 21. Cómo obtener el último registro por grupo en SQL
- 22. Comprueba si UIWebView está cargado
- 23. Javascript: elimine el último carácter si es dos puntos
- 24. Eliminar el último carácter si es DirectorySeparatorChar con C#
- 25. ¿Comprueba si se toca UIView?
- 26. Conseguir el último registro de SQL en condición WHERE
- 27. Comprueba si la variable es una fecha válida con PHP
- 28. Comprueba si un enlace es interno o externo
- 29. Obtener el último registro de cada mes en MySQL ...?
- 30. ¿Comprueba si un parámetro es un módulo de Python?
Sólo por curiosidad, ¿por qué necesita eso? – codingbiz
¡Quiero hacer algunas excepciones si estoy en los últimos registros! – wben