Anzeige:
Ergebnis 1 bis 6 von 6

Thema: QT: statisches sql-objekt

  1. #1
    Registrierter Benutzer
    Registriert seit
    05.06.2002
    Ort
    Hof
    Beiträge
    154

    QT: statisches sql-objekt

    Hallo, Leute,

    ich beschäftige mich neuerdings mit Qt und C++.
    Um das ganze richtig zu machen lernt man Neues
    am besten in der praktischen Anwendung. Ich habe
    jetzt schon einiges mit GUI-Elementen herumgespielt
    und untereinander zum "agieren" gebracht. :-)

    Ich habe ein Hauptfenster in dem in einem
    "widgetStack" tausche ich benötigte Unterwidgets
    aus. In den verschiedenen UWs möchte ich auf ein
    einziges globales QSqlDatabase-Objekt zugreifen.
    Eine Verbindung pro Anwendung zur Datenbank
    reicht ja wohl

    Leider habe ich nach einigem Ausprobieren keine Ahnung,
    wie das funktionieren soll.

    Als erstes habe ich probiert, das Objekt als public
    static Attribut in meinem MainWidget einzubinden.
    Das hat funktioniert beim kompilieren, aber der
    Linker hat mir einen Fehler gemeldet (irgendwas
    mit "unresolved reference").

    Als nächstes habe ich eine eigenständige Variable
    definiert.

    Folgende config.h:
    Code:
    #ifndef CONFIG_H
    #define CONFIG_H
    
    #define	SQL_HOST	"localhost"
    #define	SQL_USER	"user"
    #define	SQL_PASS	"pass"
    #define	SQL_BASE	"base"
    
    #include <qsqldatabase.h>
    
    static QSqlDatabase* sqlDatabase;
    
    #endif
    in meinem MainWiget wird die Datenbank ganz normal
    initialisiert. Sobald ich aber jetzt einen Testaufruf von
    einem anderen Widget, das ich in den WidgetStack
    geladen habe ausführe, stürzt meine Anwendung mit
    einem Speicherzugriffsfehler ab.

    Meine Fragen:

    Habe ich einen grossen Denkfehler gemacht?
    Wie wird das mit dem Datenbankobjekt sonst gelöst?

    Ist es falsch, wenn ich das Interface meiner Anwendung
    komplett durch ein neues Widget austauschen möchte,
    und ich das durch Anlegen und Löschen mit einem WidgetStack
    realisiere? Menüzeile und Statuszeile bleiben dabei
    bestehen.

    Über einige Tips, die meinen Start in die Qt/C++-Welt
    erleichtern würden wäre ich dankbar :-) Momentan habe
    ich das Buch "Programming with Qt" von "Matthias Kalle
    Dalheimer" und die Tutorials der Qt-Doc durchgearbeitet.

    Danke sehr

    cu, stop.h

  2. #2
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Du könntest das Datenbank Objekt einfach im Hauptfenster anlegen und dann an die Widgets, die es brauche übergeben.
    Als Kontruktorparameter oder über eine Methode.


    Ist es falsch, wenn ich das Interface meiner Anwendung
    komplett durch ein neues Widget austauschen möchte,
    und ich das durch Anlegen und Löschen mit einem WidgetStack
    realisiere? Menüzeile und Statuszeile bleiben dabei
    bestehen.
    Wenn du das andere Widget nicht mehr brauchst, kannst du es schon löschen und durch das neue ersetzen.

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  3. #3
    Registrierter Benutzer Avatar von TheDodger
    Registriert seit
    17.05.2001
    Ort
    Hamburg
    Beiträge
    615
    Warum so umständlich?
    Unter QT kann man die erste eingerichtet QSqlDatabase als default Database benutzen.
    Ist man einmal eingeloggt, steht die Verbindung und man kann ganz normal mit QSqlQuery seine SQL-Statements absetzen.
    Bodo
    Systemadmistration UNIX

  4. #4
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Original geschrieben von TheDodger
    Warum so umständlich?
    Unter QT kann man die erste eingerichtet QSqlDatabase als default Database benutzen.
    Das ist natürlich fein, wusste ich nicht.
    Wieder mal was gelernt

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  5. #5
    Registrierter Benutzer
    Registriert seit
    05.06.2002
    Ort
    Hof
    Beiträge
    154
    HEYYY !!!!
    Luxus !

    Kümmert sich dann Qt auch darum, ob die Verbindung zur
    DB noch steht oder ob sie durch ein Timeout getrennt
    wurde?

    cu, stop.h

  6. #6
    Registrierter Benutzer Avatar von TheDodger
    Registriert seit
    17.05.2001
    Ort
    Hamburg
    Beiträge
    615
    Hmmm, gute Frage
    Kann ich so gar nicht beantworten.

    Was sagt die Doku zu QDataBase dazu?
    Bodo
    Systemadmistration UNIX

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •