Principales respuestas
Hacer consulta Select Max en sqlite

Pregunta
-
Hola buenas tardes compañeros les comento , que estoy desarrollando una pequeña aplicación , es similar a una agenda , el propósito es controlar las tareas del usuario y enviarle un popup de las tareas , del dia. Para esto mi objetivo es crear una consulta con sql , es Un SELECT MAX pero lo que pasa es que mi consulta no me devuelve ningún registro , espero y me puedan ayudar les dejo mi código fuente :
private async void MAXFECHA() { SQLiteAsyncConnection db = new SQLiteAsyncConnection(Path.Combine(Windows.Storage.ApplicationData.Current.LocalFolder.Path, "people.sqlite")); var result = await db.CreateTableAsync<Tareas>(); try { DateTime fecha = DateTime.Parse(String.Format("{0:d}", DateTime.Now)); var consulta = await db.QueryAsync<Tareas>("SELECT MAX(horarecor) FROM Tareas WHERE User=? AND fecharecor=? ", lblusuario.Text,fecha); var resultados = consulta.ToList(); foreach (var nx in resultados) { myPopup.IsOpen = true; PopUpText.Text = String.Format("{0},{1},{2}", nx.recordatorio, nx.horarecor, nx.fecharecor); } } catch (Exception errop) { MessageDialog msgbox = new MessageDialog(errorp.message,""); await msgbox.ShowAsync();
} }
Pero no me devuelve ningun registro la consulta espero que me puedan ayudar o ¿hay una manera de hacer esta consulta con linq?
Saludos desde México DF
- Editado Oscar Emilio Perez Martinez lunes, 17 de septiembre de 2012 4:12
Respuestas
-
hola
el tema que noto es que estas ejecutando una query escalar por lo que deberia encontrarse el equivamente al ExecuteScalar() de ado.net para recuperar un valor simple y no una entidad Tarea como alli estas realizando
porque la query que defines no devuelves una "Tarea", sino que devuelves un valor numerico simple
o sea usa el metodo ExecuteScalarAsync<>()
[Windows 8] Bases de datos locales en aplicaciones metro (I)
saludos
Leandro Tuttini
Blog
Buenos Aires
Argentina- Marcado como respuesta Oscar Emilio Perez Martinez lunes, 17 de septiembre de 2012 23:45
-
Hola!
Leandro, gracias por citar mi post sobre SQLite en Windows 8 :)
Oscar, si te fijas en mi artículo que ha citado Leandro, verás que uso Linq para ejecutar una consulta filtrada por nombre, puedes hacer algo así para tu consulta, mucho mejor que ejecutar el SQL "a pelo"
En el artículo se explica bien como descargarte sqlite-net, el orm que se usa con sqlite para trabajar.
Un saludo!
MCTS - .NET 4.0 Windows Applications
MCTS - .NET 4.0 Data Access
MCTS - .NET 4.0 Service Communication Applications
MCPD - .NET 4.0 Windows Developer
Visita mi Blog en Geeks.ms
Sigueme en Twitter- Marcado como respuesta Oscar Emilio Perez Martinez lunes, 17 de septiembre de 2012 23:45
Todas las respuestas
-
hola
el tema que noto es que estas ejecutando una query escalar por lo que deberia encontrarse el equivamente al ExecuteScalar() de ado.net para recuperar un valor simple y no una entidad Tarea como alli estas realizando
porque la query que defines no devuelves una "Tarea", sino que devuelves un valor numerico simple
o sea usa el metodo ExecuteScalarAsync<>()
[Windows 8] Bases de datos locales en aplicaciones metro (I)
saludos
Leandro Tuttini
Blog
Buenos Aires
Argentina- Marcado como respuesta Oscar Emilio Perez Martinez lunes, 17 de septiembre de 2012 23:45
-
Hola!
Leandro, gracias por citar mi post sobre SQLite en Windows 8 :)
Oscar, si te fijas en mi artículo que ha citado Leandro, verás que uso Linq para ejecutar una consulta filtrada por nombre, puedes hacer algo así para tu consulta, mucho mejor que ejecutar el SQL "a pelo"
En el artículo se explica bien como descargarte sqlite-net, el orm que se usa con sqlite para trabajar.
Un saludo!
MCTS - .NET 4.0 Windows Applications
MCTS - .NET 4.0 Data Access
MCTS - .NET 4.0 Service Communication Applications
MCPD - .NET 4.0 Windows Developer
Visita mi Blog en Geeks.ms
Sigueme en Twitter- Marcado como respuesta Oscar Emilio Perez Martinez lunes, 17 de septiembre de 2012 23:45