dbExpress Framework no Windows e Mac com C++Builder e FireMonkey
O objetivo deste artigo é demonstrar o uso do dbExpress Framework para executar SQLs em um bancos de dados InterBase ou Firebird, através uma aplicação FireMonkey Console em C++ que poderá ser executa em Windows e Mac, desta forma teremos um único código para as duas plataformas.
A aplicação FireMonkey Console usada como exemplo foi criada através do Wizard do IDE e irá efetuar as seguintes operações:
- Conectar ao banco de dados, que aqui usado foi InterBase e Firebird, mas você pode usar qualquer banco suportado pelo dbExpress Framework; alguns drivers do dbExpress não são suportados em Mac, como é o caso do SQL Server e ODBC driver;
- Executar um SELECT na tabela COUNTRY e mostrar os resultados percorrendo os cursor retornado.
O código abaixo é simples e de fácil leitura e traz uma série de comentários para facilitar o entendimento.
#include <fmx.h> #pragma hdrstop #pragma argsused #include <tchar.h> #include <stdio.h> #include <System.SysUtils.hpp> #include <Data.DBXDynalink.hpp> #include <Data.DBXCommon.hpp> #include <Data.DBXInterbase.hpp> #include <memory> int _tmain(int argc, _TCHAR* argv[]) { // Get database connection instance std::auto_ptr<TDBXConnection>conn (TDBXConnectionFactory::GetConnectionFactory()->GetConnection ("EMPLOYEE", "sysdba", "masterkey")); if (conn.get() != NULL) { printf("================= Connection Properties ============\n"); AnsiString s = conn->ConnectionProperties->Properties->Text + "\n"; printf(s.c_str()); // create command and transaction objects to execute the query std::auto_ptr<TDBXCommand>command(conn->CreateCommand()); // initiate a transaction TDBXTransaction *transaction = conn->BeginTransaction(TDBXIsolations::ReadCommitted); command->Text = "SELECT * FROM Country"; command->Prepare(); // execute the query and get the cursor (DBXReader) std::auto_ptr<TDBXReader>reader(command->ExecuteQuery()); // print number of columns and each record printf(AnsiString("Number of Columns:" + IntToStr(reader->ColumnCount) + "\n").c_str()); // display the list of records while (reader->Next()) { printf((reader->Value[reader->GetOrdinal("COUNTRY")]->GetAnsiString () + "\n").c_str()); } printf("====================================================\n"); conn->CommitFreeAndNil(transaction); } Sleep(5000); return 0; }
Certifique-se que o alias dbExpress EMPLOYEE foi criado e configurado corretamente para conectar ao banco de dados EMPLOYEE.GDB, além claro do cliente do InterBase ou FireBird que dever estar instalado. Com estes passos efetuados compile e execute sua aplicação no Windows ou Mac.
Ao executar no Mac, certifique-se de que o arquivos dbxconnection.ini está no mesmo diretório da aplicação, caso contrário você poderá ter problemas, pois a aplicação não irá encontrar os parâmetros para conectar ao banco.
O resultado abaixo representa a aplicação sendo executada no Mac.
Você pode baixar o código fonte direto do repositório de demos do RAD Studio utilizando a linha de comando abaixo:
svn co https://radstudiodemos.svn.sourceforge.net/svnroot/radstudiodemos/RadStudio_XE2/CPP/Database/dbExpress/DBXFramework/
Sr. Lanusse, gostaria de saber como faço para conectar com datasnap com firemonkey mobile pelo nome da makina servidora, explicando.
Tenho um projeto em firemonkey mobile rodando em android, até ai tudo pois tenho a conexao funcionando entre o tablet e o servidor datasnap na minha maquina de produca, o problema é que só consigo conexao pelo ip da minha maquina, em desktop seria só distribuir o dbxconnection.ini com o aplicativo, mas como fazer isso em aplicativos moveis?
Grato e aguardo.