SQLite: prüfen ob INSERT erfolgreich war

Alles rund um die Programmierung mit Qt
Antworten
mikro
Beiträge: 60
Registriert: 19. April 2006 09:23
Wohnort: Erlangen
Kontaktdaten:

SQLite: prüfen ob INSERT erfolgreich war

Beitrag von mikro »

ich hatte gehofft, dass ich das über den Rückgabewert von QSqlQuery::exec() machen kann:

Code: Alles auswählen

void ImportDialog::executeLine(QString line) {
    QSqlQuery query(line,*myDB);
    if (query.exec()) {
        tEStatement->append("<font color=\"green\">"+line+"</font>\n<br /><br />\n");
    }
    else {
        tEStatement->append("<font color=\"red\">"+line+"</font>\n"+myDB->lastError().text()+"\n<br /><br />\n");
    }
}
(tEStatement ist ein TextEdit)

Eingelesen wird eine Datei voller INSERT-Statements. Auch wenn es line heisst, ist in der Variable immer genau ein Statement drin. Da meine Datenbank jetzt gefüllt ist, wurde wohl auch alles richtig eingelesen. Er stellt aber alles rot statt grün dar. Kann ich das anders prüfen?
Whitefurrows
Beiträge: 138
Registriert: 1. Mai 2006 19:50

Beitrag von Whitefurrows »

Wird an deinem html liegen, versuche es mal so:

tEStatement->append("<font color=\"green\">"+line+"</font><br/><br/>");
tEStatement->append("<font color=\"red\">"+line+"</font>"+myDB->lastError().text()+"<br/><br/>");

für was soll das "\n" gut sein?
mikro
Beiträge: 60
Registriert: 19. April 2006 09:23
Wohnort: Erlangen
Kontaktdaten:

Beitrag von mikro »

Whitefurrows hat geschrieben:Wird an deinem html liegen,
wie soll das denn gehen? wenn als erstes ein roter Eintrag dabei wäre, und die weiteren nicht die Farbe wechseln hätte ich da ja noch dran glauben können, aber wie das dazu führen soll, dass das Programm beim if in die falsche Zeile geht kann ich nicht nachvollziehen.
Whitefurrows hat geschrieben:für was soll das "\n" gut sein?
Um einen Zeilenumbruch zu erzeugen. Eben keinen HTML-Zeilenumbruch, sondern einen "richtigen". Für den Fall, dass ich in das HTML mal reinschauen will, will ich das ja nicht alles in einer Zeile stehen haben.
Wie machst Du denn Zeilenumbrüche??
Whitefurrows
Beiträge: 138
Registriert: 1. Mai 2006 19:50

Beitrag von Whitefurrows »

Sorry, ich nehme alles zurück, hatte die frage nicht richtig gelesen. Sieht alles soweit OK aus. Klar mache ich auch einen Zeilenumbruch mit "\n"

Lasse dir z.B. mal mit qDebug und query.lastError()->text() alles anzeigen. Bekommst du dann einen Fehler angezeigt?
mikro
Beiträge: 60
Registriert: 19. April 2006 09:23
Wohnort: Erlangen
Kontaktdaten:

Beitrag von mikro »

sei Dir verziehen, nachdem Du gerade mein Problem gelöst hast ;)
ich dachte immer ich müsste die Fehlermeldung in QSqlDatabase::lastError() finden, dabei ist er nach dem query in QSqlQuery::lastError().

Danke. Jetzt sehe ich wenigens was:
CREATE TABLE "Stammdaten" ("Auftraggeber" VARCHAR(100) NULL,"Auftrag" VARCHAR(255) NULL,"Bearbeitungstiefe" INTEGER DEFAULT '5' NULL);
database schema has changed Unable to fetch row
also "database schema has changed" klingt ja eher nach Erfolgsmeldung. Aber "unable to fetch row" klingt doch eher, als würde ich bei einem CREATE keine vernünftige Antwort kriegen ;(
Muss ich also beim einlesen der Datei bei jedem Statement gucken was für Art Statement es ist und entsprechend das Ergebnis prüfen :(
Antworten