Principales respuestas
Insertar registro en una base de datos SQLite desde una aplicacion metro (Modern UI)

Pregunta
-
Muy buenas a ver intento insertar un registro o tupla o fila pero claro no es de una forma normal, de forma normal funciona pero claro intento usar índices, porque además el índice es el que dice esta transacción la ha realizado tal usuario que se logueado en el programa y estará asociada con el, pero bueno estoy teniendo muchos problemas para llegar a realizar esta tarea me da un error en la fila y me lleva hasta el método de executenonquery de sqlcommand estas son las líneas que he escrito en mi programa para realizarlo y no lo hace con éxito
ahí están las líneas que he puesto me da el error al insertar una fila saludos.
Respuestas
-
Hola..
Primero que todo aviso que nunca he usado SQLLite, pero.. ¿el problema no será que no estás recibiendo el ID del select que haces primero?
En tu código tienes:
var consulta = db.ExecuteAsync("SELECT IDCuenta FROM Cuentas WHERE (Nombre = '" + Usuario + "');");
int id = consulta.Id;Aquí el ExecuteAsync es asíncrono como bien lo indica el nombre, pero tu no esperas a que se concluya la ejecución para recuperar el resultado. Si incluyes un await a tu select debería funcionar.
var consulta = await db.ExecuteAsync("SELECT IDCuenta FROM Cuentas WHERE (Nombre = '" + Usuario + "');");
int id = consulta.Id;De cualquier forma, si solo necesitas el ID, no sería mejor utilizar un ExecuteScalar? Mira este post de Josue, http://geeks.ms/blogs/jyeray/archive/2012/07/04/windows-8-bases-de-datos-locales-en-aplicaciones-metro-i.aspx
El hace esto:
int NumCustomers = await db.ExecuteScalarAsync<int>("SELECT COUNT(Id) FROM Customer");
Salu2
MCTS ADO.NET, MCTS WCF, MCTS WinForm, MCTS ASP.NET, MCPD Enterprise.
Mi perfil: My geeks
Colaborador: www.secondnug.com- Marcado como respuesta Ricardo RussoModerator viernes, 21 de diciembre de 2012 12:18
Todas las respuestas
-
Hola!
¿Qué error te da exactamente?
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 -
Muy buenas te pongo captura de pantalla me da justo ese error justo después del insert y si te das cuenta la consulta lo que saca ers el ID del usuario con el que el usuario se loguea en la aplicación y ya puede añadir transacciones y esas transacciones el fallo que me da es al añadir
mi clase con la que se ha creado la tabla transacciones
namespace MoneyManage.Entidades
{
public class Transacciones
{
[SQLite.PrimaryKey, SQLite.AutoIncrement]
public int IDTransaccion { get; set; }[SQLite.MaxLength(256)]
public string Nombre { get; set; }//Amount es cantidad
[SQLite.MaxLength(256)]
public string Amount { get; set; }
[SQLite.MaxLength(2000)]
public string descripcion { get; set; }[SQLite.MaxLength(10)]
public string tipo { get; set; }
public bool cleared { get; set; }
public string date { get; set; }
//foreign key IDCuenta
[SQLite.Indexed]
public int IDCuenta { get; set; }
}}
si te das cuenta IDCuenta es indexed y es el campo de la base de datos que esta dando por saco al intentar hacer el insert.
-
Hola..
Primero que todo aviso que nunca he usado SQLLite, pero.. ¿el problema no será que no estás recibiendo el ID del select que haces primero?
En tu código tienes:
var consulta = db.ExecuteAsync("SELECT IDCuenta FROM Cuentas WHERE (Nombre = '" + Usuario + "');");
int id = consulta.Id;Aquí el ExecuteAsync es asíncrono como bien lo indica el nombre, pero tu no esperas a que se concluya la ejecución para recuperar el resultado. Si incluyes un await a tu select debería funcionar.
var consulta = await db.ExecuteAsync("SELECT IDCuenta FROM Cuentas WHERE (Nombre = '" + Usuario + "');");
int id = consulta.Id;De cualquier forma, si solo necesitas el ID, no sería mejor utilizar un ExecuteScalar? Mira este post de Josue, http://geeks.ms/blogs/jyeray/archive/2012/07/04/windows-8-bases-de-datos-locales-en-aplicaciones-metro-i.aspx
El hace esto:
int NumCustomers = await db.ExecuteScalarAsync<int>("SELECT COUNT(Id) FROM Customer");
Salu2
MCTS ADO.NET, MCTS WCF, MCTS WinForm, MCTS ASP.NET, MCPD Enterprise.
Mi perfil: My geeks
Colaborador: www.secondnug.com- Marcado como respuesta Ricardo RussoModerator viernes, 21 de diciembre de 2012 12:18
-
-
Hola
podrías indicar como lo has solucionado para que cualquier otro cuente con la solución?
Muchas gracias.
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