Entwickler-Ecke
Datenbanken (inkl. ADO.NET) - C# System.Data.SQLite.dll klasse nicht initialisierbar
bassdriver - Mi 04.03.15 21:16
Titel: C# System.Data.SQLite.dll klasse nicht initialisierbar
Hallo zusammen,
nach diversen versuchen habe ich die schnauze voll :D.
Gerne würde ich in Visual Studio 2013 C# SQLite hinzufügen,
mein Problem ich kann die Klasse "SQLiteConnection" nicht initialisieren und den folge Code nicht ausführen.
Beispiel:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7:
| using System.Data.SQLite;
[...] MessageBox.Show("RUN"); new SQLiteConnection(); MessageBox.Show("INIT CONN"); [...] |
Wenn ich diesen Code ausführe wird nur die MessageBox "RUN" angezeigt,
die Form ist weiterhin klickbar und es erscheint keine Fehlermeldung.
Dies ist auch so wenn ich den "connectionstring" als parameter übergebe.
SQLite installation wie folgt:
1.
https://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki --- sqlite-netFx40-setup-x64-2010-1.0.95.0.exe downloaden.
2. installer ausführen.
3. unter visual studio projekt rechtsklick "verweis hinzufügen" und System.Data.SQLite.dll auswählen.
Hat jemand eine Idee?
Gruß
Bassdriver 8)
Ralf Jansen - Mi 04.03.15 21:22
Wenn der Konstruktor von SQLiteConnection ein Problem hat wird er eine Exception werfen. Die solltest du fangen (Stichwort try...catch) und dir dann denn Inhalt der Exception ansehen. Die sollte dir sagen, zumindest indirekt, was das Problem ist.
bassdriver - Mi 04.03.15 21:34
danke für deinen ratschlag, :)
aber das ist nicht das problem wie gesagt die form ist weiterhin klickbar und es erscheint keine fehlermeldung sprich debugmodus :P
auch wenn ich das versuche der code geht leider nicht in den catch-block rein.
meine vermutung ist, das es an der installation oder am verweis/en liegt...
Ralf Jansen - Mi 04.03.15 21:38
Dann zeig mal den kompletten Codeblock mit dem Exception Handler. Das die 2.te MessageBox nicht angezeigt wird ohne das im Code davor eine unbehandelte Exception aufgetaucht wäre halte ich für nahezu ausgeschlossen.
bassdriver - Mi 04.03.15 21:47
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65:
| using System; using System.Collections.Generic; using System.Data.SQLite; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms;
namespace testdb.libs { class Database {
public static String sourceDirectory = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)+"\\testdb\\"; public const String sqliteFile = "testdb.sdb";
public int lastQueryCount = 0; public String lastQuery = "";
private SQLiteConnection connection; private static Database instance = null;
private bool boolInstallTables = false;
public Database() { this.install(); try { MessageBox.Show(boolInstallTables.ToString()); connection = new SQLiteConnection(); MessageBox.Show("Connected"); connection.ConnectionString = "Data Source=" + sourceDirectory + sqliteFile + ";Version=3;FailIfMissing=True"; MessageBox.Show(connection.State.ToString()); if (connection.State != System.Data.ConnectionState.Open) { connection.Open(); } } catch (SQLiteException e) { MessageBox.Show(e.Message); } if (this.boolInstallTables) { MessageBox.Show("IS TRUE"); this.installTables(); } }
private String install() { if ( !Directory.Exists(sourceDirectory) ) { Directory.CreateDirectory(sourceDirectory); } if ( !File.Exists(sourceDirectory+sqliteFile) ) { SQLiteConnection.CreateFile(sourceDirectory + sqliteFile); this.boolInstallTables = true; MessageBox.Show("INST"); }
return sourceDirectory; }
private void installTables() { MessageBox.Show("folgt"); } } } |
Ralf Jansen - Mi 04.03.15 21:52
Versuch mal jede Exception zu fangen. Je nach Problem, z.B. weil eine weitere Abhängigkeit nicht gefunden oder geladen werden kann, wird es keine SQLiteException sein.
bassdriver - Mi 04.03.15 21:59
ahh jetzt kam auch etwas :D
---------------------------
---------------------------
Die DLL "SQLite.Interop.dll": Das angegebene Modul wurde nicht gefunden. (Ausnahme von HRESULT: 0x8007007E) kann nicht geladen werden.
---------------------------
OK
---------------------------
nun hab ich schonmal einen ansatz..
ich danke dir!
Ralf Jansen - Mi 04.03.15 22:06
Ich vermute mal deine System.Data.SQLite.dll Reference hast du auf Copy local stehen so das die auch in dein Ausgabeverzeichnis kopiert wird? Dann vermute ich mal mußt du die passende SQLite.Interop.dll dll (32bit bzw. 64bit) noch manuell in einen entsprechenden Unterordner deines Ausgabeordners kopieren. Ist in dem Wiki Eintrag den du verlinkt hast unter "Using Native Library Pre-Loading" beschrieben wo die hin müssen.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!