Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. Polish
  4. Problem z bazą danych

Problem z bazą danych

Scheduled Pinned Locked Moved Polish
4 Posts 3 Posters 2.0k 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.
  • R Offline
    R Offline
    rwtryb
    wrote on last edited by
    #1

    Cześć! Próbuję i próbuję i nie mogę dojść jak połączyć się z bazą danych. Doszedłem do tego na podstawie jednego z tutoriali:
    hh.pro
    @#-------------------------------------------------

    Project created by QtCreator 2013-12-01T18:42:56

    #-------------------------------------------------

    QT += core
    QT += sql
    QT -= gui

    TARGET = hh
    CONFIG += console
    CONFIG -= app_bundle

    TEMPLATE = app

    SOURCES += main.cpp
    @
    main.cpp
    @#include <QSqlDatabase>
    #include <QSqlQuery>
    #include <QDebug>
    #include <QString>

    int main(int argc, char *argv[])
    {
    QSqlDatabase db;
    db = QSqlDatabase::addDatabase("QSQLITE");
    db.setDatabaseName("fd.sqlite");

        if (!db.open())
        {
                qDebug() << "Błąd: nie można się połączyć z bazą!";
        }
        else
        {
                qDebug() << "Nawiązano połączenie z bazą danych.";
    
                QSqlQuery dodawanie;
                dodawanie.exec&#40;"INSERT INTO test (imie, nazwisko, wiek&#41; VALUES ('Stefan', 'Kowalski', '20')");
                dodawanie.exec&#40;"INSERT INTO test (imie, nazwisko, wiek&#41; VALUES ('Jan', 'Nowak', '36')");
    
                QSqlQuery pobieranie;
                pobieranie.exec&#40;"SELECT * FROM test"&#41;;
    
                while (pobieranie.next())
                {
                        QString imie = pobieranie.value(1).toString();
                        QString nazwisko = pobieranie.value(2).toString();
                        int wiek = pobieranie.value(3).toInt();
                        qDebug() << imie << nazwisko << wiek;
                }
        }
    
        return 0;
    

    }
    @

    i ciągle dostaję, że połączenie z bazą jest, ale nie mogę wykonać na niej operacji i nie chce mi zwrócić imienia, ani nazwiska, wie ktoś co z tym zrobić?

    1 Reply Last reply
    0
    • sierdzioS Offline
      sierdzioS Offline
      sierdzio
      Moderators
      wrote on last edited by
      #2

      Całe Qt zakłada, że istnieje Singleton QCoreApplication. Bez niego, pochodne QObject nie będą działały! Także na początek polecam dodanie na początku:
      @
      #include <QCoreApplication>
      // ..
      QCoreApplication app(argc, argv);
      @

      A na końcu:
      @
      return app.exec();
      @

      (Z(:^

      1 Reply Last reply
      0
      • R Offline
        R Offline
        rwtryb
        wrote on last edited by
        #3

        ok dzięki, plik wygląda tak:

        @
        #include <QCoreApplication>
        #include <QSqlDatabase>
        #include <QSqlQuery>
        #include <QDebug>
        #include <QString>

        int main(int argc, char *argv[])
        {
        QCoreApplication app(argc, argv);
        QSqlDatabase db;
        db = QSqlDatabase::addDatabase("QSQLITE");
        db.setDatabaseName("fgfgfd.sqlite");

            if (!db.open())
            {
                    qDebug() << "Błąd: nie można się połączyć z bazą!";
            }
            else
            {
                    qDebug() << "Nawiązano połączenie z bazą danych.";
        
                    QSqlQuery dodawanie;
                    dodawanie.exec&#40;"INSERT INTO test (imie, nazwisko, wiek&#41; VALUES ('Stefan', 'Kowalski', '20')");
                    dodawanie.exec&#40;"INSERT INTO test (imie, nazwisko, wiek&#41; VALUES ('Jan', 'Nowak', '36')");
        
                    QSqlQuery pobieranie;
                    pobieranie.exec&#40;"SELECT * FROM test"&#41;;
        
                    while (pobieranie.next())
                    {
                            QString imie = pobieranie.value(1).toString();
                            QString nazwisko = pobieranie.value(2).toString();
                            int wiek = pobieranie.value(3).toInt();
                            qDebug() << imie << nazwisko << wiek;
                    }
            }
        
            return app.exec();
        

        }
        @

        ale tak właściwie ciągle jednak jest źle, chyba muszę poszukać innego tutoriala

        1 Reply Last reply
        0
        • C Offline
          C Offline
          cezaryece
          wrote on last edited by
          #4

          Stworzyłem kilka konsolowych aplikacji Qt4 i nie tworzyłem w nich instacji QCoreApplication.
          Tam gdzie używałem sqlite mam w setDatabaseName pełną ścieżkę do pliku bazy, czyli np. QDir::home().path() + dbName + ".sqlite" i działa.

          Acha... wartości pobierane z query liczymy od 0, więc imie to pobieranie.value(0), nazwisko (1), wiek (2).

          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