Laden...

SQLite Verbindung Aufbauen

Erstellt von Blue_Dragon vor 15 Jahren Letzter Beitrag vor 14 Jahren 1.992 Views
B
Blue_Dragon Themenstarter:in
198 Beiträge seit 2005
vor 15 Jahren
SQLite Verbindung Aufbauen

verwendetes Datenbanksystem: SQLite

Hallo,

ich steh gerade vor einem Problem und weiß gerade wirklich nicht wie ich es lösen soll.

Habe mich mit einem Kollegen darauf geeinigt, das ich auf einem Mobilen Gerät Datensätze in deine SQLite Datenbank schreibe und er sie dann mit einem Programm auf dem Server in regelmäßigen Abständen ausließt und in eine andere DB schreibt.

Mein Sourcecode sieht so aus:


        private void button1_Click(object sender, EventArgs e)
        {
            SQLiteConnection conn = new SQLiteConnection("Data Source=test.db;Version=3;New=False;Compress=False;UTF8Encoding=True");
            conn.Open();
            textBox1.Text = conn.State.ToString();
            SQLiteCommand cmd = new SQLiteCommand("INSERT INTO test VALUES (1);", conn);
            cmd.ExecuteNonQuery();
            textBox1.Text = "Done";
        }

Die test.db liegt in meinem \bin\Debug Verzeichnis... Es sieht so aus als würde er nicht die richtige .db öffnen (obwohl es nur eine gibt) weil er mir zur laufzeit beim ausführen des commands den fehler:

"SQLite error: no such table test"

ausgibt, obwohl ich diese tabelle definitv angelegt habe und sie mir auch mit SQLite Maestro in dieser .db angezeigt wird.

Ich hoffe ihr könnt mir helfen

Liebe Grüße

B
Blue_Dragon Themenstarter:in
198 Beiträge seit 2005
vor 15 Jahren

Hallo,

hab meinen Code jetzt mal geändert das ich ihm das komplette verzeichnis der Datenbank angeb... sieht jetzt so aus:

        private void button1_Click(object sender, EventArgs e)
        {
            SQLiteConnection conn = new SQLiteConnection("Data Source=C:\\Dokumente und Einstellungen\\Kolo\\Eigene Dateien\\Visual Studio 2008\\Projects\\SQLite\\SQLite\\bin\\Debug\\test.db;");
            conn.Open();
        }

wenn er jetzt das conn.Open() ausführen will, schreit er: (unable to open database file

ich weiß aber nicht wieso er die datei nicht öffnen kann

liebe grüße

C
252 Beiträge seit 2007
vor 15 Jahren

Hast du auch eine entsprechende Tabelle angelegt? Für mich sieht es aufgrund der Fehlermeldung "SQLite error: no such table test" danach aus.

T
219 Beiträge seit 2006
vor 15 Jahren

Ich würde entweder den Tabellennamen oder den Datenbanknamen ändern, damit Du den Fehler besser interpretieren kannst.

Der Connectstring scheint in Ordnung.

Prüf mal mit dem Debugger an welcher Zeile der Fehler kommt.

Thomas

M
103 Beiträge seit 2006
vor 15 Jahren

Setz in deinem ConnectionString den Paramter 'New' mal auf 'TRUE', dann wird die Datenbankdatei erstellt wenn sie nicht da ist. Wenn das geglückt ist, kannst du ja noch deine Tabelle anlegen und dann weiter testen.

B
Blue_Dragon Themenstarter:in
198 Beiträge seit 2005
vor 15 Jahren

Der Fehler kommt in der Zeile:

conn.Open();

Und ich hab jetzt auch im Connectionstring New=TRUE gesetzt, aber es kommt trotzdem noch immer der selbe Fehler:

"Unable to open the database file"

C
252 Beiträge seit 2007
vor 15 Jahren

Laut deinem ersten Post konntest du ja bereits eine Verbindung herstellen. Nur das Absetzen des Commands hat nicht funktioniert. Also stimmt jetzt vermutlich etwas am connection string nicht.
Aber zurück zu meiner Frage: Hast du auch sicher die Tabelle angelegt?

B
Blue_Dragon Themenstarter:in
198 Beiträge seit 2005
vor 15 Jahren

Ich hab mir jetzt ein Komplett neues Projekt erstellt...

Mit einer neuen Datenbank in die ich wieder eine Tabelle geschrieben habe und alles... Ich schreib mal den Sourcecode rein:

private void button1_Click(object sender, EventArgs e)
        {
            SQLiteConnection myconn = new SQLiteConnection("Data Source=myDATA.s3db;Version=3;");
            myconn.Open();
            SQLiteCommand cmd = new SQLiteCommand("INSERT INTO TISCHE VALUES ('Tisch1')", myconn);
            cmd.ExecuteNonQuery();
        }

Fehler passiert jetzt wieder beim Abwerfen des Commands... Er sagt mir "No such Table: Tische"

Meine Connection hat mit einem kurz vor dem Abwerfen des Commands Folgende Attribute:

DataSoruce = "myDATA"
Database = "main"
State = "Open"

Ich häng hier mal einen Screenshot von meiner Datenbank an

T
219 Beiträge seit 2006
vor 15 Jahren

Um es mal auf den Punkt zu bringen: Es liegt nicht an Sqlite -). Ich bin zwar auch kein Fachmann darin, aber mein erstes SQLite Projekt läuft prima.

Ich nutze einen connectstring der Form

sqlite_conn = new SQLiteConnection("Data Source=" + datenbankname + ";Version=3;Compress=false;");

wobei datenbankname den kompletten Pfad inkl. Namen enthält.

Bei mir gab es Problem, wenn ich das Semikolon beim CommandText hier weggelassen habe

sqlite_cmd.CommandText = "SELECT * FROM VORFAELLE ORDER BY ZEITPUNKT;";

Thomas

A
49 Beiträge seit 2009
vor 14 Jahren
Absoluter Pfad

Es braucht wohl eine absolute Pfadangabe:



string conn_string = @"Data Source=C:\\Dokumente und Einstellungen\\Kolo\\Eigene Dateien\\Visual Studio 2008\\Projects\\SQLite\\SQLite\\bin\\Debug\\test.db;"

SQLiteConnection conn = new SQLiteConnection(conn_string);


Viele Grüße

Tobi

P.S. bin neu hier, deswegen an alle mal ein freundliches servus (aus bayern is 😄)