[ Foro de C# ]

Como puedo añadir Sqlite a este programa

25-Mar-2014 22:35
Invitado (Luis)
3 Respuestas

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);

        }
    }
}



25-Mar-2014 22:47
Nacho Cabanes (+84)

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".


25-Mar-2014 22:56
Invitado (Luis)

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


28-Mar-2014 19:53
Nacho Cabanes (+84)

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.)