2009-05-07 20 views
7

Hola personas He estado luchando para usar sqlite en mi aplicación C# 2.0 y finalmente he decidido deshacerme de las suposiciones y hacer preguntas realmente básicas.sqlite3.dll y system.data.sqlite.dll

Cuando creé una base de datos con los usuarios dicen iAgency de mesa, desde herramientas externas como Firefox taponamiento y otra herramienta SQLAdmin que no puede consultar desde el interior sqlicommand VS2005 se muestra System.Data.SQLite.SQLiteException:Sqlite Error no such table users, puede estar seguro de que he hecho referencia a system.data.sqlite instalado con SQLite-1.0.61.0-setup

Cuando hago lo contrario, como crear una base de datos y una tabla desde VS server explorer y VS database gui tools, no puede ser consultado pero puede ser visto por otras herramientas, pero tablas creadas a través de consultas desde VS utilizando stringbuilder, por ejemplo, create table bla bla. se puede mostrar en una cuadrícula de datos, pero ninguna de las herramientas puede ver y mostrar esa tabla.

¿QUÉ NECESITO EXACTAMENTE PARA HACER TRABAJAR SQLITE EN MI APLICACIÓN?

He intentado añadir sqlite3.dll de sqlitedll-3_6_14.zip descargado desde el sitio SQLite bajo la sección precompiled binarios para Windows como referencia a mi solicitud, pero falla con make sure it's accessible an it's a valid assembly or com component.

+0

Mejor publicar un código de muestra. –

Respuesta

11

He descargado este SQLite-1.0.61.0-setup.exe Corrí la instalación y luego escribí esto para acceder a los favoritos de firefox sqlite db.

using System.Data.SQLite; // Dont forget to add this to your project references 
          // If the installation worked you should find it under 
          // the .Net tab of the "Add Reference"-dialog 

namespace sqlite_test 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      var path_to_db = @"C:\places.sqlite"; // copied here to avoid long path 
      SQLiteConnection sqlite_connection = new SQLiteConnection("Data Source=" + path_to_db + ";Version=3;New=True;Compress=True;"); 

      SQLiteCommand sqlite_command = sqlite_connection.CreateCommand(); 

      sqlite_connection.Open(); 

      sqlite_command.CommandText = "select * from moz_places"; 

      SQLiteDataReader sqlite_datareader = sqlite_command.ExecuteReader(); 

      while (sqlite_datareader.Read()) 
      { 
       // Prints out the url field from the table: 
       System.Console.WriteLine(sqlite_datareader["url"]); 
      } 
     } 
    } 
} 
+2

Si no encuentra el ensamblado 'System.Data.SQLite' en ** Agregar referencia .../.Net ** (No lo hice) Agréguelo de ** Browse **. Encontrarás 2 DLL en 'C: \ Program Files \ System.Data.SQLite \ bin' (o' C: \ Program Files (x86) \ System.Data.SQLite \ bin' si estás usando la versión x86 en una instalación de Windows de 64 bits). – ocodo

3

Intente abrir la base de datos en la línea de comandos de la herramienta SQLite (desde SQLite.org) y compruebe el esquema.

puede comprobar el esquema de esta manera:

.schema 

Esto le devolverá todo el SQL necesario para crear las tablas en la base de datos. Asegúrese de que la tabla esté allí, con el nombre que asume que debería tener.

No necesita el archivo .dll de SQLite.org, todo lo que necesita son los ensamblajes de System.Data.SQLite.

+0

gracias por la respuesta. Aquí hay otra pregunta estúpida. ¿Dónde debo extraer la aplicación exe? Porque he intentado seleccionar la base de datos por este comando .database para encontrar las bases de datos, pero nada.Después de copiar el archivo ejecutable en la carpeta de mi aplicación C# e intenté seleccionar la base de datos con este comando "sqlite3 iagency" .Todavía no se muestra –

+0

. Resuelvo el problema que aquí expreso. Vea el comentario que hice para R Ubben. Debería usar sqlite3. iagency.db olvidé la extensión. No estoy entendiendo muy bien lo que quería decir con "puede verificar el esquema de esta manera" desde el cmd.exe. Escribí sqlite3 iagency.db para seleccionar y luego escribí .schema o debe ser seguido por el nombre de la tabla como .schema users.thanks man –

0

Puede intentar agregar la ubicación del ensamblaje y el db a la variable de entorno de ruta. El ensamblado SQLite contiene tanto el código .Net como el código nativo fusionados, por lo que no necesita el dll C. (la herramienta mergebin que incluyen para hacer esto es bastante interesante)

+0

sí agregué la ruta sqlite.exe a la variable de entorno. alguna prueba en mi disco d utilizando el cmd.exe de Windows y puedo consultar esa tabla bien. ahora cambio el directorio donde está mi proyecto y la base de datos creada anteriormente. Los comandos sqlite3 iagency y .schema no producen ningún resultado. He intentado con los usuarios de .scheman? pero nada. ¿Me falta algo? –

2

Para mí - this enlace ayudó mucho al inicio.

Fue más difícil conseguir trabajo subsónico, para hacer que la base de datos sea accesible a través de la aplicación web -
, pero esa es otra historia.

0

También intenté agregar la ubicación a Variable de entorno de ruta pero sin éxito.

Finalmente copié System.Data.SQLite.dll y System.Data.SQLite.lib en la carpeta bin de la aplicación web donde están ubicados otros ensamblajes, y la aplicación funcionó.