2009-05-07 14 views
7

Hallo Leute Ich habe gekämpft, sqlite in meiner C# 2.0 Anwendung zu verwenden, und ich habe mich schließlich dafür entschieden, Annahmen loszuwerden und wirklich grundlegende Fragen zu stellen.sqlite3.dll und system.data.sqlite.dll

Wenn ich eine Datenbank erstellt sagen iagency mit Tabelle Benutzer, von externen Tools wie firefox Verstopfung und andere sqladmin Werkzeug Ich kann es nicht von sqlicommand innerhalb VS2005 abfragen es System.Data.SQLite.SQLiteException:Sqlite Error no such table users zeigt, bitte sicher sein, dass ich Bezug auf system.data.sqlite gemacht habe installiert mit SQLite-1.0.61.0-setup

Wenn ich das Gegenteil tun, wie eine Datenbank und eine Tabelle von VS-Server-Explorer und VS-Datenbank-GUI-Tools erstellen, kann es auch nicht abgefragt werden, kann aber von anderen Tools gesehen werden, aber Tabellen, die durch Abfrage von VS mit stringbuilder erstellt wurden, z. B. create table bla bla. Es kann in einem Datagrid angezeigt werden, aber keines der Tools kann diese Tabelle anzeigen und anzeigen.

WAS BRAUCHE ICH GENAU, UM SQLITE IN MEINER ANWENDUNG ZU ARBEITEN?

Ich habe versucht, sqlite3.dll von sqlitedll-3_6_14.zip von SQLite-Website unter Abschnitt vorkompilierte Binaries für Windows als Hinweis auf meine Anwendung heruntergeladen hinzufügen, aber es scheitert mit make sure it's accessible an it's a valid assembly or com component.

+0

Besser post einige Beispielcode. –

Antwort

11

Ich habe diese SQLite-1.0.61.0-setup.exe heruntergeladen Die Installation lief dann habe ich dies geschrieben, um die Firefox-Favoriten sqlite db zugreifen.

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

Wenn Sie die Assembly 'System.Data.SQLite' nicht in der ** Referenz hinzufügen .../.Net ** finden (ich nicht.) Fügen Sie sie aus ** Durchsuchen ** hinzu. Sie finden 2 DLLs in 'C: \ Programme \ System.Data.SQLite \ bin' (oder' C: \ Programme (x86) \ System.Data.SQLite \ bin', wenn Sie die x86-Version verwenden auf einer 64-Bit-Windows-Installation.) – ocodo

3

Versuchen Sie, die Datenbank in der Befehlszeile SQLite-Tool (von SQLite.org) zu öffnen, und überprüfen Sie das Schema.

Sie können das Schema auf diese Weise prüfen:

.schema 

Das ganze SQL dump wird notwendig, um die Tabellen in der Datenbank zu erstellen. Stellen Sie sicher, dass die Tabelle mit dem Namen vorhanden ist, den Sie annehmen sollten.

Sie benötigen die DLL-Datei von SQLite.org nicht, alles, was Sie benötigen, ist die Assembly von System.Data.SQLite.

+0

danke für die Antwort.Hier ist eine andere dumme Frage.Wohin soll ich die EXE-App zu extrahieren? Ich habe versucht, die Datenbank durch diesen Befehl .Datenbank ausgewählt, um die Datenbanken aber nichts zu finden.nachdem ich die exe innerhalb des C# Anwendungsordners kopiert habe und versucht habe, die Datenbank mit diesem Befehl "sqlite3 iagency" auszuwählen. immer noch nichts zu zeigen –

+0

Ich löse das Problem, das hier erklärt wurde.Siehe den Kommentar, den ich für R Ubben gemacht habe iagent.db Ich habe die Erweiterung vergessen. Ich verstehe nicht sehr gut, was Sie mit "Sie können das Schema auf diese Weise zu überprüfen" aus der cmd.exe i typed sqlite3 iagency.db zu wählen und nachdem ich .schema oder es sollte gefolgt von dem Tabellennamen wie .schema users.thanks man –

0

Sie könnten versuchen, den Pfad der Assembly und die db zur Umgebungsvariablen Path hinzuzufügen. Die SQLite-Assembly enthält sowohl .Net- als auch nativen Code zusammen, so dass Sie die C-DLL nicht benötigen. (das Mergebin-Tool, das sie dazu verwenden, ist ziemlich interessant)

+0

Ich habe den sqlite.exe Pfad zur Umgebungsvariable hinzugefügt.did einige Tests auf meinem Laufwerk d mit dem Windows cmd.exe und ich kann diese Tabelle in Ordnung abfragen. Jetzt ändere ich das Verzeichnis, wo mein Projekt und die zuvor erstellte Datenbank ist. Die Befehle sqlite3 iagency und .schema erzeugen keine Ausgabe. Ich habe .scheman? Benutzer ausprobiert? aber nichts. Habe ich etwas übersehen? –

2

Für mich - this Link half viel beim Start.

War schwieriger Subsonic Arbeit zu bekommen, Datenbank über Web-Anwendung zugänglich zu machen -
aber das ist eine andere Geschichte.

0

Ich habe auch versucht, den Speicherort zu Pfad Umgebungsvariable, aber ohne Erfolg.

Schließlich kopierte ich System.Data.SQLite.dll und System.Data.SQLite.lib in den Ordner bin der Webanwendung, wo andere Baugruppen gefunden werden, und die Anwendung funktionierte.

Verwandte Themen