Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. German
  4. SQl Dateien/Datenbanken mit einem Qt-Programm verarbeiten
Forum Update on Monday, May 27th 2025

SQl Dateien/Datenbanken mit einem Qt-Programm verarbeiten

Scheduled Pinned Locked Moved German
2 Posts 2 Posters 2.9k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • M Offline
    M Offline
    Master_P
    wrote on last edited by
    #1

    Hallo zusammen,

    ich bin kompletter Qt-Neuling und habe bisher nur Erfahrung mit C++ in Microsoft Visual Studio. Bei meiner Werkstudententätigkeit werde ich zur zeit zum Programmieren mit Qt5 eingesetzt und habe derzeit eine größere Baustelle vor mir:
    Ich soll ein Programm (Widget-Anwendung) schreiben, durch das man SQL Dateien/Datenbanken darstellen und schreibend auf sie zugreifen kann. Diese soll man anschließend neu abspeichern können. Ich habe im Internet auch schon einen passenden Programmcode gefunden, kriege das Programm allerdings nicht sinnvoll zum laufen. Hier schonmal der Link zur Homepage, auf der ich den Code gefunden habe: http://zanshin.de/bws/mediawiki/index.php5?title=Datenbankzugriffe#Zugriff_auf_die_Datenbank

    Und hier meine Codefragmente:

    pro-Datei

    QT += core gui
    QT += sql

    greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

    TARGET = Datenbankzugriff
    TEMPLATE = app

    SOURCES += main.cpp
    mainwindow.cpp

    HEADERS += mainwindow.h

    FORMS += mainwindow.ui

    mainwindow.h

    #ifndef MAINWINDOW_H
    #define MAINWINDOW_H

    #include <QMainWindow>
    #include <QtSql>

    namespace Ui {
    class MainWindow;
    }

    class MainWindow : public QMainWindow
    {
    Q_OBJECT

    public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

    private:
    Ui::MainWindow *ui;
    };

    #endif // MAINWINDOW_H

    main.cpp

    #include "mainwindow.h"
    #include <QApplication>

    int main(int argc, char *argv[])
    {
    QApplication a(argc, argv);
    MainWindow w;
    w.show();

    return a.exec&#40;&#41;;
    

    }

    mainwindow.cpp

    #include "mainwindow.h"
    #include "ui_mainwindow.h"

    MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
    {
    ui->setupUi(this);

    // Mit der Methode lastError kann man sich eventuelle Fehler ausgeben lassen
    ui->Listbox->addItem(db.lastError().text());

    QSqlQuery query("SELECT * FROM t_person");

    // isActive() gibt true zurück, wenn die Abfrage erfolgreich ausgeführt wurde
    // aber noch nicht mit finish() oder clear() beendet wurde

    if (query.isActive()) {
    ui->Listbox->addItem("Abfrage erfolgreich");

    // Die Methode record() liefert die Feldinformationen für die aktuelle Abfrage
    QSqlRecord datensatz = query.record();
    QString zeile;
    int anzSpalten = datensatz.count();
    bool ok = query.first();
    
    while (ok) {
        zeile = "";
    
        for (int i=0; i<anzSpalten; i++) {           
           zeile += query.value(i).toString() + " ";
        } //for
        ui->Listbox->addItem(zeile);
        
        ok = query.next(); 
    } //while
    

    } //isActive
    else {
    ui->Listbox->addItem("Abfrage NICHT erfolgreich");
    ui->Listbox->addItem(query.lastError().text());
    }

    //Schliessen der Abfrage
    query.finish();

    //Schliessen der Verbindung
    db.close();

    Nachdem ich versucht habe das Programm zu kompilieren, kam folgende Fehlermeldung: "mainwindow has no member named listbox"
    Ich hoffe jemand kann mir weiterhelfen, vielen Dank im Voraus ;)

    Gruß Matthias

    1 Reply Last reply
    0
    • C Offline
      C Offline
      clochydd
      wrote on last edited by
      #2

      Hallo und willkommen im DevNet!

      Zunächst ein kleiner Tipp: Du solltest den Code formatiert (mit dem Button "Code") eingeben, Beispiel:

      @
      class MainWindow : public QMainWindow
      { Q_OBJECT

      public: explicit MainWindow(QWidget *parent = 0); ~MainWindow();

      private: Ui::MainWindow *ui;
      };
      @

      Das verbessert die Lesbarkeit enorm. Du kannst deinen Thread korrigieren, indem du die einzelnen Blocks mit @ beginnen und beenden lässt.

      Die Fehlermeldung deutet daraufhin, dass du "listbox" ansprechen möchtest, aber "Listbox" definiert hast.

      Hast du das Projekt mit dem Qt Creator eingegeben?
      Für den Einstieg empfehle ich dir eines der mit dem Creator gelieferten Beispiel zu testen - etwa den SQL-Browser.

      Zur weiteren Unterstützung wäre noch hilfreich, wenn du uns mitteilst, welche Datenbank und welche Qt-Version eingesetzt wird.

      Happy coding :)

      1 Reply Last reply
      0

      • Login

      • Login or register to search.
      • First post
        Last post
      0
      • Categories
      • Recent
      • Tags
      • Popular
      • Users
      • Groups
      • Search
      • Get Qt Extensions
      • Unsolved