Usando dbExpress Framework no Windows e Mac com C++Builder

Nas próximas semanas estarei publicando uma série de exemplos em C++ para demonstrar o uso da VCL, FireMonkey, RTL, dbExpress, etc. Cada exemplo estará focando um recurso, mas você irá aprender sobre outros recursos, pois estes outros recursos serão parte do exemplo. Se tem algum recurso em C++ que você está interessado, me deixe saber, pois irei tentar incluir estes em dos meus próximos artigos.

Neste primeiro artigo, demonstro como usar dbExpress Framework para executar SQLs em um banco de dados InterBase, meu objetivo é executar a aplicação no Windows e Mac, tendo que escrever uma única aplicação, assim sendo criei um aplicativo console que utilizar FireMonkey.

O assistente (Wizard) para criação de aplicações console em C++ foi atualizado no C++ Builder XE2, este agora contém a opção Target Framework, como você pode ver abaixo.

O código abaixo mostra como conectar a uma base de dados InterBase, executar um SELECT na tabela COUNTRY e exibir os resultados, vale lembrar que você pode usar o dbExpress Framework para interagir com qualquer banco de dados suportado pelo dbExpress, lembrando que alguns drivers dbExpress não estão disponíveis no Mac, como por exemplo, SQL Server e o driver ODBC.

Se você é um desenvolvedor C++ rapidamente irá entender o código abaixo, o qual contém 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;
}

Antes de executar esse código, certifique-se que o alias dbExpress EMPLOYEE está configurado para a conectar ao banco de dados EMPLOYEE.GDB e o cliente do InterBase esteja instalado, a partir do momento em que o ambiente está configurado, compile e execute este aplicativo no Windows e Mac, a imagem a seguir mostra esta aplicação rodando no Mac.

Existem alguns pontos que você precisa estar ciente quando distribuir e executar suas aplicação no Mac, estou preparando um post onde vou explicar mais sobre este tema.

Até aqui aprendemos como usar DBX Framework, distribuir e executar este tipo de aplicação no Windows e Mac.

Você pode baixar o código fonte aqui ou apenas atualizar suas pasta de exemplos do RAD Studio XE2 a partir do repositório do RAD Studio no SVN.

Posts relacionados

One Response to Usando dbExpress Framework no Windows e Mac com C++Builder

  1. Responder Rodrigo Carreiro | Usando dbExpress Framework no Windows e Mac com C++Builder | Consultoria | Treinamento | Rio de Janeiro says:

    [...] demonstraremos como usar dbExpress Framework para executar SQLs em um banco de dados InterBase.Por Andreano Lanusse: Nas próximas semanas estarei publicando uma série de exemplos em C++ para demonstrar o uso da [...]

Deixe uma resposta

O seu endereço de email não será publicado Campos obrigatórios são marcados *

*

Você pode usar estas tags e atributos de HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>