Autor Beitrag
bassdriver
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Mi 04.03.15 21:16 
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:

ausblenden 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. system.data.sqlite.o...k/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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4700
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4700
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Mi 04.03.15 21:47 
ausblenden volle Höhe 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4700
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: 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.

Für diesen Beitrag haben gedankt: bassdriver
bassdriver Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4700
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: 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.

Für diesen Beitrag haben gedankt: bassdriver