none
Cargar datos de una base de Datos SqlLite en datagriedview RRS feed

  • Pregunta

  • necesito de su ayuda es la primera ves que trabajo con base de datos sqllite.

    Ya instale el Ado.net de SqLite tambien ya agrege la referencia System.Data.SQLite

    pero aun no logro cargar los datos de una tabla en un datagriedview.

    la base de datos se llama datos y la tabla usuarios

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.Data.SQLite;


    namespace SqlLite
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }

            private void Form1_Load(object sender, EventArgs e)
            {
                SQLiteConnection ObjConnection = new SQLiteConnection("Data Source=datos.sqlite;");
                SQLiteCommand ObjCommand = new SQLiteCommand("SELECT * FROM usuarios", ObjConnection);
                ObjCommand.CommandType = CommandType.Text;

                SQLiteDataAdapter ObjDataAdapter = new SQLiteDataAdapter(ObjCommand);
                DataSet dataSet = new DataSet();

                ObjDataAdapter.Fill(dataSet, "usuarios");

                dataGridView1.DataSource = dataSet.Tables["usuarios"];
                

            }
        }
    }

    siempre que ejecuto el código me muestra SQLite error no such table:usuarios

    sábado, 24 de marzo de 2012 4:27

Todas las respuestas

  • Siga el ejemplo en http://www.devart.com/dotconnect/sqlite/docs/Devart.Data.SQLite~Devart.Data.SQLite.SQLiteDataAdapter.html.  Supongo que MissingSchemaAction es la clave.

    Jose R. MCP

    sábado, 24 de marzo de 2012 6:15
    Moderador
  • los pasos que describes y el codigo que aqui muestras estan correctos

    quiwero pensar que la tabla usuario esta creada

    que pasa si haces

      private void Form1_Load(object sender, EventArgs e)
            {
                SQLiteConnection ObjConnection = new SQLiteConnection("Data Source=datos.sqlite;");
                SQLiteCommand ObjCommand = new SQLiteCommand("SELECT * FROM usuarios", ObjConnection);
                ObjCommand.CommandType = CommandType.Text;
    
                SQLiteDataAdapter ObjDataAdapter = new SQLiteDataAdapter(ObjCommand);
                DataTable dt= new DataTable ();
    
                ObjDataAdapter.Fill(dt);
    
                dataGridView1.DataSource = dt;
                
    
            }

    o sea usas un datatable directo

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    sábado, 24 de marzo de 2012 12:32
  • los pasos que describes y el codigo que aqui muestras estan correctos

    quiwero pensar que la tabla usuario esta creada

    que pasa si haces

      private void Form1_Load(object sender, EventArgs e)
            {
                SQLiteConnection ObjConnection = new SQLiteConnection("Data Source=datos.sqlite;");
                SQLiteCommand ObjCommand = new SQLiteCommand("SELECT * FROM usuarios", ObjConnection);
                ObjCommand.CommandType = CommandType.Text;
    
                SQLiteDataAdapter ObjDataAdapter = new SQLiteDataAdapter(ObjCommand);
                DataTable dt= new DataTable ();
    
                ObjDataAdapter.Fill(dt);
    
                dataGridView1.DataSource = dt;
                
    
            }

    o sea usas un datatable directo

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    me sigue dando el mismo error y claro la tabla usuarios existe
    sábado, 24 de marzo de 2012 15:43
  • tienes alguna aplciacion de administracion de sqllite ? lo pregunto porque podrias probar de eejcutar alli la query que defines en el codigo y ver que resultados obtienes

    tambien podrias intentar hacer un SEELCT de otra tabla distinta para ver si es un problema general o solo de esta en concreto

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    sábado, 24 de marzo de 2012 15:59
  • si tengo el sqliteadmin y al ejecutar ahi la query me funciona bien
    sábado, 24 de marzo de 2012 16:13
  • mmm... el problema podria ser el siguiente...

    según la cadena de conexión que estas utilizando no estas indicando donde esta la base de datos, así que el la crea en el directorio donde estas ejecutando el programa, osea en el Debug, como en la cadena de conexión no le estas indicando que no cree la base de datos  el la crea y no notas este error, al crearse no existe la tabla "usuarios" por ende el error al hacer el select. asumo y presumo que este podria ser el error.

    si la base de datos sqlite no esta en el mismo directorio donde estas ejecuando el programa, asegurate de pasarle el path de esta en el Data Source.

    Salu2,


    Marvin E. Pineda

      ComboBoxMultiColumns

     NetBarControl

      TextEditor


    sábado, 24 de marzo de 2012 16:28
  • la base de datos la tengo en el mismo lugar del proyecto por eso utilizo esa cadena de conexion
    sábado, 24 de marzo de 2012 16:37
  • en el mismo lugar del proyecto?... pero el programa el compilar y ejecutar se hace en el Debug... la base de datos la tienes dentro del directorio "Debug"?... si buscas veras que ya existe un archivo llamada datos.sqlite porque el la creo sin que tu lo supieras... y seguramente no es esta donde esta la tabla de usuarios...

    asegurate.


    Marvin E. Pineda

      ComboBoxMultiColumns

     NetBarControl

      TextEditor


    sábado, 24 de marzo de 2012 16:40
  • creo que tienes razón estuve viendo la carpeta Debug y al parecer crea la base de datos pero sin la tabla usuarios...

    como tendría que definir la cadena de conexión entonces?

    sábado, 24 de marzo de 2012 16:46
  • creo que tienes razón estuve viendo la carpeta Debug y al parecer crea la base de datos pero sin la tabla usuarios...

    como tendría que definir la cadena de conexión entonces?

    en el data source deberas indicar el directorio donde esta la base de datos ejemplo:

    using (SQLiteConnection conn = new SQLiteConnection(@"Data Source = C:\xxx\xxx\datos.sqlite"))
    {
    }

    ahora!!!!... si no quieres que la base de datos se cree automaticamente si no existe entonces en el Data Source tendras que agregar.

    using (SQLiteConnection conn = new SQLiteConnection(@"Data Source = C:\xxx\xxx\datos.sqlite; FailIfMissing=True"))
    {
    }

    mayor referencia:Connection String for SQLite

    Salu2,


    Marvin E. Pineda

      ComboBoxMultiColumns

     NetBarControl

      TextEditor


    sábado, 24 de marzo de 2012 16:56
  • pero digamos que si luego quiero distribuir la aplicación con la base de datos esta cadena de conexión no afectaría?
    sábado, 24 de marzo de 2012 17:05
  • pero digamos que si luego quiero distribuir la aplicación con la base de datos esta cadena de conexión no afectaría?

    para eso tendras que tomar un directorio donde se alojara la base de datos... verifica si existe el archivo, si no existe entonces creas la base de datos y sus tablas.

    ejemplo:

    string sqliteDBName = @"C:\xxx\xxx\datos.sqlite";
    if (!File.Exists(sqliteDBName))
    {
        SQLiteConnection.CreateFile(sqliteDBName);
        using (SQLiteConnection conn = new SQLiteConnection(sqliteDBName))
        {
            // tu codigo para crear tablas e indices y demas...
        }
    }
    

    y antes de que preguntes... cuando generas el instalador van las dll's de sqlite, pero, pero!!!... en la computadora donde instalaras el programa necesitaras instalar un Runtime para C++ para que puede funcionar, caso contrario no funcionara... no recuerdo de donde lo descargue pero google como distribuir sqlite database o algo similar...

    Salu2,


    Marvin E. Pineda

      ComboBoxMultiColumns

     NetBarControl

      TextEditor

    sábado, 24 de marzo de 2012 17:12
  • este es el que necesitaras en caso de la computadora no lo tenga.

    Microsoft Visual C++ 2010 Redistributable Package (x86)

    Salu2,


    Marvin E. Pineda

      ComboBoxMultiColumns

     NetBarControl

      TextEditor

    sábado, 24 de marzo de 2012 17:18
  • ok gracias por tus respuesta ahorita probare con la forma que tu lo indicas
    sábado, 24 de marzo de 2012 17:21
  • cualquier duda, no dudes en preguntar... pero preguntando no se adquiera experiencia... googlea, buscar, lee... prueba... y así vas... ya cuando topes, entonces pregunta. ;-)

    Salu2,


    Marvin E. Pineda

      ComboBoxMultiColumns

     NetBarControl

      TextEditor

    sábado, 24 de marzo de 2012 17:26
  • la manera que me indicaste la cadena de conexión me funciono ya lo probe.

    gracias ahora terminare la aplicación y luego intentare redistribuirla. y claro siempre busco en google y leo soluciones pero aveces no las comprendo bien ya que apenas estoy en 2 año en la universidad y aun no manejo a la perfección el lenguaje .Net

    sábado, 24 de marzo de 2012 18:21