SQLite Befehl scheint einfach ignoriert zu werden
lima-city → Forum → Programmiersprachen → Programmieren mit .NET & Mono
abfragen
befehl
code
datenbank
datensatz
erstellen
fehler
integer not
liegen
not
null
passen
problem
rang
schau
schlagen
senden
tabelle
url
zahl
-
Hätte da ein Problem mit SQLite....ich komm einfach nicht dahinter, was da nicht stimmt.
Ich erstelle eine neue Tabelle, sofern noch keine Tabelle mit diesem Namen existiert....das funktioniert.
Danach möchte ich einfach einen Datensatz in diese Tabelle einfügen....er beendet den Befehl ohne Fehler, aber leider auch, ohne irgendwas gemacht zu haben.
Die Tabelle ist nach Ausführung des INSERT INTO Kommandos immer noch leer.
Hier mal mein Code:
SQLiteConnection connection = new SQLiteConnection(); connection.ConnectionString = "Data Source=F:\\bin\\Debug\\data\\market.db;Count Changes=off;Journal Mode=off;Pooling=true;Cache Size=10000;Page Size=4096;Synchronous=off;"; connection.Open(); SQLiteTransaction transaction = connection.BeginTransaction(); SQLiteCommand command = new SQLiteCommand(connection); try { command.CommandText = "CREATE TABLE IF NOT EXISTS `10000043` (orderID INTEGER NOT NULL PRIMARY KEY, regionID INTEGER NOT NULL, solarSystemID INTEGER NOT NULL, stationID INTEGER NOT NULL, typeID INTEGER NOT NULL, volEntered INTEGER NOT NULL, volRemaining INTEGER NOT NULL, minVolume INTEGER NOT NULL, range INTEGER NOT NULL, jumps INTEGER NOT NULL, duration INTEGER NOT NULL, bid INTEGER NOT NULL, price FLOAT NOT NULL, issued DATETIME NOT NULL);"; command.ExecuteNonQuery(); command.CommandText = "INSERT INTO `10000043` (orderID, regionID, solarSystemID, stationID, typeID, volEntered, volRemaining, minVolume, range, jumps, duration, bid, price, issued) VALUES ('2561432957', '10000043', '30002187', '60008494', '207', '1347500', '1078673', '1', '32767', '0', '90', '0', '68.96', '2012-06-10 23:54:07');"; command.ExecuteNonQuery(); } catch (Exception ex) { MessageBox.Show("ex.Message"); } command.Dispose(); transaction.Commit(); connection.Close(); connection.Dispose();
Erkennt jemand einen Fehler an der Query?
Müsste doch eigentlich passen....Exception wird mir keine geliefert....der Befehl müsste also ausgeführt werden.
Wenn ich im Nachhinein aber die Tabelle prüfe, wurde diese zwar erstellt, ist aber leer.... -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Schau am besten mal in den Errorlog der Datenbank.
Das ist ja das Problem....es wird kein Error-Log erstellt, weil es keinen Error gibt.
Der Befehl wird einfach nicht ausgeführt....die Datenbank selbst gibt keinen Fehler zurück. -
Vielleicht ist das ein Lösungsansatz:
Hast du schon versucht, dein Query mit einer anderen Programmiersprache zu senden, beispielsweise mit PHP, um zu sehen, ob der Fehler im Query selbst liegt, oder vielleicht in einem fehlerhaft installierten .NET-Paket, da du mit C# arbeitest?
http://php.net/manual/en/book.sqlite.php -
Den SQLite Befehl mit PHP zu senden hat funktioniert....er wurde ausgeführt und in der mit C# erstellten SQLite-Tabelle befindet sich jetzt der Datensatz.
Hmmm....jetzt ist es zwar naheliegend zu sagen, es läge am .NET-Paket, aber alle anderen INSERT-Abfragen die ich soweit im Programmcode in C# habe, funktionieren tadellos.
Wieso also nur diese eine nicht?
Die genaue Query mit bereits eingesetzten Werten die ausgeführt werden soll lautet:
INSERT INTO `10000043` (orderID, regionID, solarSystemID, stationID, typeID, volEntered, volRemaining, minVolume, range, jumps, duration, bid, price, issued) VALUES ('2561432957', '10000043', '30002187', '60008494', '207', '1347500', '1078673', '1', '32767', '0', '90', '0', '68.96', '2012-06-10 23:54:07');
Diese Query soll eben einen Datensatz in die Tabelle "10000043" einfügen.
Alle INSERT-Abfragen, die ich bisher auf andere Tabellen gemacht habe, haben funktioniert....nur INSERT-Abfragen auf DIESE Tabelle schlagen fehl.
Bzw. schlagen nicht fehl....aber bleiben halt ohne Wirkung.
Könnte es eventuell daran liegen, dass der Tabellenname nur aus Zahlen besteht?
Aber PHP hatte ja auch keine Probleme damit.
Beitrag zuletzt geändert: 9.7.2012 16:47:47 von adelwoehrer -
adelwoehrer schrieb:
Könnte es eventuell daran liegen, dass der Tabellenname nur aus Zahlen besteht?
Aber PHP hatte ja auch keine Probleme damit.
Dann versuche, das Problem weiter aufzusplitten, vielleicht pass von einem Parameter das Format nicht.
Damit meine ich, einmal nur die orderID einzufügen, dann nur die regionID, ..., und dich so durchzuarbeiten, bis du weißt, wer der Übeltäter ist, und dann gezielt dort weiter suchen. Eine andere Wahl hast du so gesehen ja auch gar nicht -
Ich habe die Datenbank nun neu erstellt und direkt mit dem SQLite Database Browser geöffnet.
Ich habe für alle Spalten NULL-Werte erlaubt, und dann die Query direkt in der Datenbank ausgeführt.
Als Rückgabewert, wenn ich die Query ausführe, erhalte ich "No Error" (also sollte passen)....aber die Tabelle bleibt leer....ich kapier's nicht. :-/
Die Datenbank selber sagt mir, dass die Query passt....aber schafft es nicht mal selbst, sie auszuführen.
EDIT:
Problem gelöst!
Es liegt tatsächlich daran, dass ausschließlich Zahlen für den Tabellennamen verwendet wurden.
SQLite kann eine solche Tabelle anscheinend zwar erstellen, danach aber nicht damit arbeiten. -.-
Wenn ich den Tabellennamen mit einem Buchstaben beginne, funktioniert alles wunderbar.
Beitrag zuletzt geändert: 11.7.2012 19:55:52 von adelwoehrer -
tipp fürs nächste mal: persistenz-framework ist das stichwort.
sql-befehle hard zu coden und tabellen per hand zu erstellen sollte man nie nie nie niemals machen. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage