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.

Aplicação FireMonkey em C++ em execução 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/
1 responder
  1. Mizael
    Mizael says:

    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.

    Responder

Deixe uma resposta

Want to join the discussion?
Feel free to contribute!

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *


Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.