Problem, Anbindung und Einfügen SQLite-Datenbank

Alles rund um die Programmierung mit Qt
Marcus Breuer
Beiträge: 113
Registriert: 31. März 2011 17:19
Wohnort: Aachen
Kontaktdaten:

Beitrag von Marcus Breuer »

Es klappt, also ich habe jetzt in der Header und imd Quellcode der oben geposteten Klasse einfach alles, was mit QSqlDatabase zu tun hatte entfernt, sprich, also auch in der Funktion, die die Datenbank öffnen sollte.

In der main steht jetzt dann im zusätzlich.

Code: Alles auswählen

QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
    db.setDatabaseName("/Users/marcusbreuer/Desktop/Kontakte");
    db.open();
und die Funktion, die speichern sollte sieht nun so aus:

Code: Alles auswählen

void Kontakt::datenSpeichern() {
    QSqlQuery query;
    query.prepare(
                "INSERT INTO Firmenkontakte(Kundennummer,Firma,Anschrift,Ansprechpartner,Telefonnummer,Fax,Mail,Homepage,Branche)"
                "VALUES (:Kundennummer,:Firma,:Anschrift,:Ansprechpartner,:Telefonnummer,:Fax,:Mail,:Homepage,:Branche)");
    query.bindValue(":Kundennummer"     ,        kunde->text());
    query.bindValue(":Firma"            ,        firma->text());
    query.bindValue(":Anschrift"        ,        anschrift->text());
    query.bindValue(":Ansprechpartner"  ,        ansprechprt->text());
    query.bindValue(":Telefonnummer"    ,        telefon->text());
    query.bindValue(":Fax"              ,        fax->text());
    query.bindValue(":Mail"             ,        mail->text());
    query.bindValue(":Homepage"         ,        homep->text());
    query.bindValue(":Branche"          ,        bran->text());
    query.exec();

    this->close();
}
Jetzt schaue ich mir als erstes nochmal die Klasse zur QSqlDatabase an. Ich glaube, ich habe nämlich nur zwei von den drei Schritten befolgt, die Du mir genannt hast. Denn die Meldung, die ich eben auch schon hatte, ist geblieben. Aber ich kann jetzt probieren zu tüfteln.
Ein Praktikum und ein Semester C++ machen noch keinen Programmierer. Das ist anstrengender, als ich gedacht hatte.
Dennoch mit Eurer Hilfe konnte ich schon einiges dazu lernen.

Viele Grüße
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

Soweit ich das gesehen hab, heißt deine db-Datei "Kontakte.db" und nicht "Kontakte".
Stimmt der Pfad zum db-file nicht, liefert open() ein "false", und die db ist nicht geöffnet.
Prinzipiell: Auch mal die Methoden zur Fehlerbestimmung nutzen, meistens so etwas wie error(), errorString(), lstError(), usw. Auch QSqlDatabase kann das :)
Und zwar nicht erst, wenn etwas passiert, sondern direkt beim Coden einbauen, dann tut man sich später bei Problemen leichter (Wenn du ganz lustig bist, loggst du gleich Funktionsname und aktuelle Datei/Zeile mit:
http://www.delorie.com/gnu/docs/gcc/cpp_21.html
Marcus Breuer
Beiträge: 113
Registriert: 31. März 2011 17:19
Wohnort: Aachen
Kontaktdaten:

Beitrag von Marcus Breuer »

Das stimmt, um solche Methoden sollte ich mich dringend kümmern. Ich werde das heute noch alles in Angriff nehmen. Ich habe bisher immer nur mit QDebug gearbeitet und mir dann bspw. db.open(); ausgeben lassen, ob es true oder false zurückgibt und war dann damit schon zufrieden. Obwohl, ich damit auch ziemlich dilletantisch gefahren bin.
Danke für den Link, aber so lustig bin ich noch nicht:) Aber es steht auch auf meiner Liste. Für den Moment bin ich aber erstmal froh, dass die Verbindung klappt und auch in die Datenbank aus dem Dialog heraus geschrieben wird.
Ich wiederhole mich, aber es macht echt Spaß, wenn man auch gute Hilfe zeitnah bekommt, mit Qt zu arbeiten.
Antworten