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
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
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
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.
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"
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?
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
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
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 😄)