Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. Portuguese
  4. Separar o SQL do código
Forum Updated to NodeBB v4.3 + New Features

Separar o SQL do código

Scheduled Pinned Locked Moved Portuguese
7 Posts 3 Posters 3.0k Views 1 Watching
  • 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.
  • E Offline
    E Offline
    Exotic_Devel
    wrote on last edited by
    #1

    Em java temos frameworks de persistência que implicitamente separam o código SQL do código da aplicação.
    Qt tem alguma coisa nesse sentido?

    1 Reply Last reply
    0
    • T Offline
      T Offline
      TioRoy
      wrote on last edited by
      #2

      Você diz algo no Java como Hibernate ou http://iciql.com/?

      1 Reply Last reply
      0
      • E Offline
        E Offline
        Exotic_Devel
        wrote on last edited by
        #3

        Se existisse um "hibernate" para Qt seria ótimo, mas meu interesse por enquanto se resumiria apenas a uma forma alegante de não deixar o código Qt misturado com SQL.
        Em java eu usava os arquivos properties, neles ficavam todo o código SQL eu fazia um parser e capturava a query.

        1 Reply Last reply
        0
        • T Offline
          T Offline
          TioRoy
          wrote on last edited by
          #4

          Mas usar o mesmo mecanismo (properties -> hashtable) que você usa no java dá para fazer no Qt tranquilo usando o "QSettings":http://doc-snapshot.qt-project.org/qt5-5.4/qsettings.html

          No caso do Hibertnate, tem o "QxORM":http://www.qxorm.com/qxorm_en/home.html.

          1 Reply Last reply
          0
          • E Offline
            E Offline
            Exotic_Devel
            wrote on last edited by
            #5

            Eu uso QSettings para as configurações do aplicativo. Apesar de saber que seria possivel usa-lo para isso não sei se seria lá muito elegante.
            Pensei e usar JSON, acho que seria mais elegante.
            O QxORM pareceu legal, mas vou deixa-lo para um futuro pois me parece que ele tem uma boa curva de estudo e com pouca documentação.

            1 Reply Last reply
            0
            • T Offline
              T Offline
              TioRoy
              wrote on last edited by
              #6

              Você pode usar o "QJsonDocument":http://doc.qt.io/qt-5/qjsondocument.html
              usando o método "fromJson":http://doc.qt.io/qt-5/qjsondocument.html#fromJson ou "fromRawData":http://doc.qt.io/qt-5/qjsondocument.html#fromRawData.

              Depois do arquivo carregado, use o método "object()":http://doc.qt.io/qt-5/qjsondocument.html#object que retorna um "QJsonObject":http://doc.qt.io/qt-5/qjsonobject.html.

              Mais ou menos assim (copiei lá do exemplo do Json Game)
              @
              bool Game::loadGame()
              {
              QFile loadFile(QStringLiteral("save.json"));

              if (!loadFile.open(QIODevice::ReadOnly)) {
                  qWarning("Couldn't open save file.");
                  return false;
              }
              
              QByteArray saveData = loadFile.readAll();
              
              QJsonDocument loadDoc(QJsonDocument::fromJson(saveData));
              
              readSettings(loadDoc.object());
              
              return true;
              

              }
              @

              1 Reply Last reply
              0
              • D Offline
                D Offline
                Daniel Alves
                wrote on last edited by Daniel Alves
                #7

                Bom não sei se vai te ajudar mas eu utilizei o QSqlTableModel que faz toda a conversação com o banco de dados, e só me preocupo com as regras de negócio, fiz uma pequena lib para facilitar é claro, mas a idéia é a seguinte tenho o Model que herda de QSqlTableModel e tem as funções "CRUD" e ao instânciar o Model eu digo com qual Tabela no banco ele vai trabalhar e o Model carrega as informações com nome dos campos e tipos de dados da tabela no banco, tenho também um Record que herda de QSqlRecord ao qual são passadas as informações para que ele próprio crie os QSqlFields, e pronto só precisa se preocupar com as regras de negócio. Não consigo fazer joins mas meu banco de dados é pequeno, para dispositivos móveis e nem possuo as informações de relacionamento entre as tabelas uma vez que as tabelas chegam ao aparelho por sincronismo. Espero ter ajudado.

                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