[ Foro de C# ]
Hola estoy intentando agregar sqlite a este programa pero me da error nada mas abrirlo este es el codigo:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SQLite;
namespace cuentas2
{
class Persona
{
public string nombre;
string _apellidos;
long _dni;
public Persona(string nombre, string apellidos, long dni)
{
this.nombre = nombre;
_apellidos = apellidos;
_dni = dni;
}
public string apellidos
{
get { return _apellidos; }
}
public string DNI
{
get { return _dni.ToString(); }
}
public string nombreCompleto
{
get { return nombre + " " + apellidos; }
}
}
class Cuenta
{
long _codigo;
double _saldo;
Persona _titular;
public static readonly long cuentaInicial = 1001;
static long contador = cuentaInicial;
public Cuenta(Persona p,double saldoInicial)
{
_codigo = contador++;
_saldo = saldoInicial;
_titular = p;
}
public long numero
{
get { return _codigo; }
}
public double saldo
{
get { return _saldo; }
}
public Persona titular
{
get
{
return _titular;
}
}
public void Ingresar(double cantidad)
{
_saldo += cantidad;
}
public bool Retirar(double cantidad)
{
if (cantidad <= saldo)
{
_saldo -= cantidad;
return true;
}
else
return false;
}
public override string ToString()
{
return "Cuenta:" + numero + " tiene " + saldo + " euritos";
}
}
class Program
{
public void CreaBase() {
SQLiteConnection conexion = new SQLiteConnection ( "Data sourcer=ejemplo.s3db;Version3;New=True;Compress=True;");
conexion.Open();
string creacion2 = "create table Cuenta (nombre varchar(30) , apellido varchar(40) , Dni varchar(10) , Cuenta int(100) , Saldo decimal(100000) );";
SQLiteCommand cm = new SQLiteCommand(creacion2, conexion);
cm.ExecuteNonQuery();
}
static void Main(string[] args)
{
int opcion = 0;
string cadena;
Cuenta[] micuenta = new Cuenta[10000];
string dn;
double salir;
Program p1 = new Program();
// p1.CreaBase();
do
{
Console.WriteLine("1.- Alta cuenta");
Console.WriteLine("2.- Ingresar");
Console.WriteLine("3.- Sacar dinero");
Console.WriteLine("4.- Cuentas Activas");
Console.WriteLine("0.- Salir");
Console.Write("opcion:");
cadena=Console.ReadLine();
opcion = Convert.ToInt32(cadena);
switch (opcion)
{
case 1:
string nombre, apellidos;
long dni;
double saldo;
Console.Write("Nombre:");
nombre = Console.ReadLine();
Console.Write("Apellidos:");
apellidos = Console.ReadLine();
Console.Write("DNI:");
cadena = Console.ReadLine();
dni = Convert.ToInt64(cadena);
Persona titular = new Persona(nombre, apellidos, dni);
Console.Write("Saldo inicial:");
cadena = Console.ReadLine();
saldo = Convert.ToDouble(cadena);
Cuenta nueva = new Cuenta(titular, saldo);
micuenta[nueva.numero - Cuenta.cuentaInicial] = nueva;
// SQLiteCommand cd =new SQLiteCommand ( "insert into Clientes values ('"+nombre+"' , '" +apellidos +"' , '" +dni +"', '" +micuenta[nueva.numero - Cuenta.cuentaInicial] +" ' ,' " +saldo +" ' );");
break;
case 2:
long numero;
double cantidad;
Console.Write("Cuenta para ingresar:");
cadena = Console.ReadLine();
numero = Convert.ToInt64(cadena);
if (micuenta[numero - Cuenta.cuentaInicial] != null)
{
Console.Write("Cantidad a ingresar:");
cadena = Console.ReadLine();
cantidad = Convert.ToDouble(cadena);
micuenta[numero - Cuenta.cuentaInicial].Ingresar(cantidad);
}
break;
case 3:
Console.WriteLine("Cuenta a la que sacar dinero ");
cadena = Console.ReadLine();
numero = Convert.ToInt64(cadena);
if (micuenta[numero - Cuenta.cuentaInicial] != null)
{
Console.WriteLine("Introduce dni : ");
dn = Console.ReadLine();
if ((micuenta[numero - Cuenta.cuentaInicial].titular.DNI == dn))
{
Console.WriteLine("introduce cuanto quieres sacar");
salir = Convert.ToDouble(Console.ReadLine());
micuenta[numero - Cuenta.cuentaInicial].Retirar(salir);
}
else { Console.WriteLine(" usted no es el titular"); }
}
else { Console.WriteLine(" esta cuenta no existe"); }
break;
case 4:
int i=0;
while(micuenta[i]!=null)
{
Console.WriteLine(micuenta[i]);
i++;
}
break;
case 0:
break;
default:
Console.WriteLine("No se ponga mucho al sol, que le afecta");
break;
}
} while (opcion != 0);
}
}
}
En primer lugar, da detalles sobre el error, porque puede ser ajeno a tu programa: por ejemplo, puedes estar intentando usar una DLL de 32 bits desde un ejecutable de 64 bits.
En segundo lugar, para ayudar al diagnóstico, intenta siempre reducir el problema hasta un fuente tan pequeño como te sea posible. Cuanto más grande sea el programa, más propenso a errores y a efectos colaterales de otros fragmentos sobre la parte "importante".
En primer lugar gracias por la respuesta , el error que me da es este :
El ensamblado de modo mixto se ha compilado con la versión 'v2.0.50727' del runtime y no se puede cargar en el runtime 4.0 sin información de configuración adicional.
Otra duda la base de datos la crea el programa no?
Muchas gracias
El mensaje es razonablemente claro: "se ha compilado con la versión 'v2.0.50727' del runtime y no se puede cargar en el runtime 4.0" Es decir, tienes que instalarte (también) "punto net" versión 2 y compilar para esa plataforma.
Y sí, como has puesto
SQLiteConnection conexion = new SQLiteConnection ( "Data sourcer=ejemplo.s3db;Version3;New=True;Compress=True;");
ese "new=true" quiere decir que la cree. Por cierto, eso de "Data sourcer" me suena mal, ¿no te sobra la última "R"?
(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)