Hallo,
ich bekomme es nicht hin Datenbanken auszulesen und etwas in die Datenbank zu schreiben.
Hier mal ein Beispiel:
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("test.db");
db.open();
QSqlQuery query(db);
--> Ich hatte vorher das gemacht:
query.exec("create table Notizen(ID int primary key,Text varchar(80))");
query.exec("insert into Notizen values(1,'Einkaufen gehen!')");
Damit habe ich die Datenbank erstellt?! Jedenfalls erscheint bei mir eine .db im Verzeichnis. So mit müsste ja auch der Eintrag mit Einkaufen gehen schon vorhanden sein.
Wenn ich jetzt aber das mache:
query.exec("select * from Notizen");
QString Ausgabe(query.value(0).toString());
passiert gar nichts, der String ist leer. Wo ist mein Fehler? Beim Eintragen in die Datenbak oder beim Auslesen?
Wäre für jeden Tipp dankbar!
[gelöst] Datenbank öffnen -> lesen und schreiben
[gelöst] Datenbank öffnen -> lesen und schreiben
Zuletzt geändert von keo am 29. März 2010 20:49, insgesamt 1-mal geändert.
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
Hallo erst einmal, danke für die schnelle Antwort!
table Notizen already exists Unable to execute statement
constraint failed Unable to fetch row
Aber was ist hier dran falsch?
Textform-> Nichts
PS: Ich sehe im Debugger das der String leer ist.
lastError gibt hier 1 zurückkeo hat geschrieben: query.exec("create table Notizen(ID int primary key,Text varchar(80))");
table Notizen already exists Unable to execute statement
lastError gibt hier 19 zurückkeo hat geschrieben: query.exec("insert into Notizen values(1,'Einkaufen gehen!')");
constraint failed Unable to fetch row
Aber was ist hier dran falsch?
lastError gibt hier -1 zurückkeo hat geschrieben: query.exec("select * from Notizen");
Textform-> Nichts
PS: Ich sehe im Debugger das der String leer ist.
Zuletzt geändert von keo am 28. März 2010 14:20, insgesamt 2-mal geändert.
-
Troll.Soft
- Beiträge: 190
- Registriert: 18. Juni 2008 09:52
- Wohnort: Hamburg
die man auch unbedingt beachten sollte.upsala hat geschrieben:LastError hat bestimmt auch eine Textausgabe...
Eine Sache scheint im Program noch zu fehlen.
Query.first() wurde nicht aufgerufen. Ist aber zwingend notwendig.
Query.next() geht weiter zum nächsten Datensatz.
exec, first, next geben jeweils true or false zurück
tschüß
Troll.Soft
Re:
Kurze Anmerkung dazu, weil ich durch google gerade auf diesen Thread gestossen bin:Troll.Soft hat geschrieben:Query.first() wurde nicht aufgerufen. Ist aber zwingend notwendig.
Wenn man query.next() verwendet ist Query.first() NICHT zwingend notwendig, wie aus der Dokumentation hervorgeht:
http://doc.trolltech.com/4.7/qsqlquery.html#next