{"id":4234,"date":"2013-01-11T21:34:57","date_gmt":"2013-01-12T05:34:57","guid":{"rendered":"http:\/\/www.andreanolanusse.com\/pt\/?p=4234"},"modified":"2013-05-01T22:33:30","modified_gmt":"2013-05-02T05:33:30","slug":"dbexpress-framework-no-windows-e-mac-com-cbuilder-e-firemonkey","status":"publish","type":"post","link":"http:\/\/www.andreanolanusse.com\/pt\/dbexpress-framework-no-windows-e-mac-com-cbuilder-e-firemonkey\/","title":{"rendered":"dbExpress Framework no Windows e Mac com C++Builder e FireMonkey"},"content":{"rendered":"<p>O objetivo deste artigo \u00e9 demonstrar o uso do dbExpress Framework para executar SQLs em um bancos de dados InterBase ou Firebird, atrav\u00e9s uma aplica\u00e7\u00e3o FireMonkey Console em C++ que poder\u00e1 ser executa em Windows e Mac, desta forma teremos um \u00fanico c\u00f3digo para as duas plataformas.<\/p>\n<p>A aplica\u00e7\u00e3o <a href=\"http:\/\/www.embarcadero.com\/products\/firemonkey\" target=\"_blank\">FireMonkey<\/a> Console usada como exemplo foi criada atrav\u00e9s do Wizard do IDE e ir\u00e1 efetuar as seguintes opera\u00e7\u00f5es:<\/p>\n<ul>\n<li>Conectar ao banco de dados, que aqui usado foi InterBase e Firebird, mas voc\u00ea pode usar qualquer banco suportado pelo dbExpress Framework; alguns drivers do dbExpress n\u00e3o s\u00e3o suportados em Mac, como \u00e9 o caso do SQL Server e ODBC driver;<\/li>\n<li>Executar um SELECT na tabela COUNTRY e mostrar os resultados percorrendo os cursor retornado.<\/li>\n<\/ul>\n<p>O c\u00f3digo abaixo \u00e9 simples e de f\u00e1cil leitura e traz uma s\u00e9rie de coment\u00e1rios para facilitar o entendimento.<\/p>\n<pre class=\"brush: cpp\">#include &lt;fmx.h&gt;\r\n\r\n#pragma hdrstop\r\n#pragma argsused\r\n\r\n#include &lt;tchar.h&gt;\r\n#include &lt;stdio.h&gt;\r\n#include &lt;System.SysUtils.hpp&gt;\r\n#include &lt;Data.DBXDynalink.hpp&gt;\r\n#include &lt;Data.DBXCommon.hpp&gt;\r\n#include &lt;Data.DBXInterbase.hpp&gt;\r\n#include &lt;memory&gt;\r\n\r\nint _tmain(int argc, _TCHAR* argv[]) {\r\n\r\n\t\/\/ Get database connection instance\r\n\tstd::auto_ptr&lt;TDBXConnection&gt;conn\r\n\t\t(TDBXConnectionFactory::GetConnectionFactory()-&gt;GetConnection\r\n\t\t(\"EMPLOYEE\", \"sysdba\", \"masterkey\"));\r\n\r\n\tif (conn.get() != NULL) {\r\n\r\n\t\tprintf(\"================= Connection Properties ============\\n\");\r\n\r\n\t\tAnsiString s = conn-&gt;ConnectionProperties-&gt;Properties-&gt;Text + \"\\n\";\r\n\t\tprintf(s.c_str());\r\n\r\n\t\t\/\/ create command and transaction objects to execute the query\r\n\t\tstd::auto_ptr&lt;TDBXCommand&gt;command(conn-&gt;CreateCommand());\r\n\r\n                \/\/ initiate a transaction\r\n\t\tTDBXTransaction *transaction =\r\n\t\t\tconn-&gt;BeginTransaction(TDBXIsolations::ReadCommitted);\r\n\r\n\t\tcommand-&gt;Text = \"SELECT * FROM Country\";\r\n\t\tcommand-&gt;Prepare();\r\n\r\n\t\t\/\/ execute the query and get the cursor (DBXReader)\r\n\t\tstd::auto_ptr&lt;TDBXReader&gt;reader(command-&gt;ExecuteQuery());\r\n\r\n\t\t\/\/ print number of columns and each record\r\n\t\tprintf(AnsiString(\"Number of Columns:\" + IntToStr(reader-&gt;ColumnCount) +\r\n\t\t\t\"\\n\").c_str());\r\n\r\n\t\t\/\/ display the list of records\r\n\t\twhile (reader-&gt;Next()) {\r\n\t\t\tprintf((reader-&gt;Value[reader-&gt;GetOrdinal(\"COUNTRY\")]-&gt;GetAnsiString\r\n\t\t\t\t() + \"\\n\").c_str());\r\n\t\t}\r\n\r\n\t\tprintf(\"====================================================\\n\");\r\n\r\n\t\tconn-&gt;CommitFreeAndNil(transaction);\r\n\t}\r\n\r\n\tSleep(5000);\r\n\treturn 0;\r\n}<\/pre>\n<p>Certifique-se que o alias dbExpress EMPLOYEE foi criado e configurado corretamente para conectar ao banco de dados EMPLOYEE.GDB, al\u00e9m claro do cliente do InterBase ou FireBird que dever estar instalado. Com estes passos efetuados compile e execute sua aplica\u00e7\u00e3o no Windows ou Mac.<\/p>\n<p>Ao executar no Mac, certifique-se de que o arquivos dbxconnection.ini est\u00e1 no mesmo diret\u00f3rio da aplica\u00e7\u00e3o, caso contr\u00e1rio voc\u00ea poder\u00e1 ter problemas, pois a aplica\u00e7\u00e3o n\u00e3o ir\u00e1 encontrar os par\u00e2metros para conectar ao banco.<\/p>\n<p>O resultado abaixo representa a aplica\u00e7\u00e3o sendo executada no Mac.<\/p>\n<p style=\"text-align: center;\"><a href=\"http:\/\/www.andreanolanusse.com\/pt\/wp-content\/uploads\/2012\/01\/CPPDBXConsoleApp-Mac1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter  wp-image-4231\" alt=\"Aplica\u00e7\u00e3o FireMonkey em C++ em execu\u00e7\u00e3o no Mac\" src=\"http:\/\/www.andreanolanusse.com\/pt\/wp-content\/uploads\/2012\/01\/CPPDBXConsoleApp-Mac1.png\" width=\"583\" height=\"686\" srcset=\"http:\/\/www.andreanolanusse.com\/pt\/wp-content\/uploads\/2012\/01\/CPPDBXConsoleApp-Mac1.png 729w, http:\/\/www.andreanolanusse.com\/pt\/wp-content\/uploads\/2012\/01\/CPPDBXConsoleApp-Mac1-148x175.png 148w\" sizes=\"(max-width: 583px) 100vw, 583px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p>Voc\u00ea pode baixar o c\u00f3digo fonte direto do <a href=\"http:\/\/sourceforge.net\/projects\/radstudiodemos\/\" target=\"_blank\">reposit\u00f3rio<\/a> de demos do RAD Studio utilizando a linha de comando abaixo:<\/p>\n<pre class=\"brush :html\">svn co https:\/\/radstudiodemos.svn.sourceforge.net\/svnroot\/radstudiodemos\/RadStudio_XE2\/CPP\/Database\/dbExpress\/DBXFramework\/<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>O objetivo deste artigo \u00e9 demonstrar o uso do dbExpress Framework para executar SQLs em um bancos de dados InterBase ou Firebird, atrav\u00e9s uma aplica\u00e7\u00e3o FireMonkey Console em C++ que poder\u00e1 ser executa em Windows e Mac, desta forma teremos um \u00fanico c\u00f3digo para as duas plataformas. A aplica\u00e7\u00e3o FireMonkey Console usada como exemplo foi [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":4232,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_s2mail":"no","footnotes":""},"categories":[16,186],"tags":[173,33,115],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v16.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>dbExpress Framework no Windows e Mac com C++Builder e FireMonkey | Andreano Lanusse | Tecnologia e Desenvolvimento de Software<\/title>\n<meta name=\"description\" content=\"Aprenda a usar dbExpress Framework no Windows e Mac com C++Builder XE2\/XE3 e FireMonkey para acessar e executar SQL&#039;s no banco de dados.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"http:\/\/www.andreanolanusse.com\/pt\/dbexpress-framework-no-windows-e-mac-com-cbuilder-e-firemonkey\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"dbExpress Framework no Windows e Mac com C++Builder e FireMonkey | Andreano Lanusse | Tecnologia e Desenvolvimento de Software\" \/>\n<meta property=\"og:description\" content=\"Aprenda a usar dbExpress Framework no Windows e Mac com C++Builder XE2\/XE3 e FireMonkey para acessar e executar SQL&#039;s no banco de dados.\" \/>\n<meta property=\"og:url\" content=\"http:\/\/www.andreanolanusse.com\/pt\/dbexpress-framework-no-windows-e-mac-com-cbuilder-e-firemonkey\/\" \/>\n<meta property=\"og:site_name\" content=\"Andreano Lanusse | Tecnologia e Desenvolvimento de Software\" \/>\n<meta property=\"article:published_time\" content=\"2013-01-12T05:34:57+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2013-05-02T05:33:30+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/www.andreanolanusse.com\/pt\/wp-content\/uploads\/2011\/09\/Icon_CBuilder.png\" \/>\n\t<meta property=\"og:image:width\" content=\"172\" \/>\n\t<meta property=\"og:image:height\" content=\"169\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@andreanolanusse\" \/>\n<meta name=\"twitter:site\" content=\"@andreanolanusse\" \/>\n<meta name=\"twitter:label1\" content=\"Est. tempo de leitura\">\n\t<meta name=\"twitter:data1\" content=\"2 minutos\">\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebSite\",\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/#website\",\"url\":\"http:\/\/www.andreanolanusse.com\/pt\/\",\"name\":\"Andreano Lanusse | Tecnologia e Desenvolvimento de Software\",\"description\":\"Andreano Lanusse blog - artigos, tutoriais e v&iacute;deos sobre tecnologia, desenvolvimento de software (Delphi XE4, C#, PHP, .NET) e t&eacute;cnicas de programa&ccedil;&atilde;o\",\"publisher\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/#\/schema\/person\/620bd05e81598c3aba4781796cbe8903\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":\"http:\/\/www.andreanolanusse.com\/pt\/?s={search_term_string}\",\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"ImageObject\",\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/dbexpress-framework-no-windows-e-mac-com-cbuilder-e-firemonkey\/#primaryimage\",\"inLanguage\":\"pt-BR\",\"url\":\"http:\/\/www.andreanolanusse.com\/pt\/wp-content\/uploads\/2011\/09\/Icon_CBuilder.png\",\"contentUrl\":\"http:\/\/www.andreanolanusse.com\/pt\/wp-content\/uploads\/2011\/09\/Icon_CBuilder.png\",\"width\":172,\"height\":169},{\"@type\":\"WebPage\",\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/dbexpress-framework-no-windows-e-mac-com-cbuilder-e-firemonkey\/#webpage\",\"url\":\"http:\/\/www.andreanolanusse.com\/pt\/dbexpress-framework-no-windows-e-mac-com-cbuilder-e-firemonkey\/\",\"name\":\"dbExpress Framework no Windows e Mac com C++Builder e FireMonkey | Andreano Lanusse | Tecnologia e Desenvolvimento de Software\",\"isPartOf\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/#website\"},\"primaryImageOfPage\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/dbexpress-framework-no-windows-e-mac-com-cbuilder-e-firemonkey\/#primaryimage\"},\"datePublished\":\"2013-01-12T05:34:57+00:00\",\"dateModified\":\"2013-05-02T05:33:30+00:00\",\"description\":\"Aprenda a usar dbExpress Framework no Windows e Mac com C++Builder XE2\/XE3 e FireMonkey para acessar e executar SQL's no banco de dados.\",\"breadcrumb\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/dbexpress-framework-no-windows-e-mac-com-cbuilder-e-firemonkey\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"http:\/\/www.andreanolanusse.com\/pt\/dbexpress-framework-no-windows-e-mac-com-cbuilder-e-firemonkey\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/dbexpress-framework-no-windows-e-mac-com-cbuilder-e-firemonkey\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"item\":{\"@type\":\"WebPage\",\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/\",\"url\":\"http:\/\/www.andreanolanusse.com\/pt\/\",\"name\":\"In\\u00edcio\"}},{\"@type\":\"ListItem\",\"position\":2,\"item\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/dbexpress-framework-no-windows-e-mac-com-cbuilder-e-firemonkey\/#webpage\"}}]},{\"@type\":\"Article\",\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/dbexpress-framework-no-windows-e-mac-com-cbuilder-e-firemonkey\/#article\",\"isPartOf\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/dbexpress-framework-no-windows-e-mac-com-cbuilder-e-firemonkey\/#webpage\"},\"author\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/#\/schema\/person\/620bd05e81598c3aba4781796cbe8903\"},\"headline\":\"dbExpress Framework no Windows e Mac com C++Builder e FireMonkey\",\"datePublished\":\"2013-01-12T05:34:57+00:00\",\"dateModified\":\"2013-05-02T05:33:30+00:00\",\"mainEntityOfPage\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/dbexpress-framework-no-windows-e-mac-com-cbuilder-e-firemonkey\/#webpage\"},\"commentCount\":1,\"publisher\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/#\/schema\/person\/620bd05e81598c3aba4781796cbe8903\"},\"image\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/dbexpress-framework-no-windows-e-mac-com-cbuilder-e-firemonkey\/#primaryimage\"},\"keywords\":[\"C++Builder\",\"dbExpress\",\"FireMonkey\"],\"articleSection\":[\"C++Builder\",\"FireMonkey\"],\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"http:\/\/www.andreanolanusse.com\/pt\/dbexpress-framework-no-windows-e-mac-com-cbuilder-e-firemonkey\/#respond\"]}]},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/#\/schema\/person\/620bd05e81598c3aba4781796cbe8903\",\"name\":\"Andreano Lanusse\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/#personlogo\",\"inLanguage\":\"pt-BR\",\"url\":\"http:\/\/0.gravatar.com\/avatar\/6a9c6f73c7c480fb826c7303288abfd3?s=96&d=mm&r=g\",\"contentUrl\":\"http:\/\/0.gravatar.com\/avatar\/6a9c6f73c7c480fb826c7303288abfd3?s=96&d=mm&r=g\",\"caption\":\"Andreano Lanusse\"},\"logo\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/#personlogo\"},\"sameAs\":[\"https:\/\/twitter.com\/andreanolanusse\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","_links":{"self":[{"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/posts\/4234"}],"collection":[{"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/comments?post=4234"}],"version-history":[{"count":0,"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/posts\/4234\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/media\/4232"}],"wp:attachment":[{"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/media?parent=4234"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/categories?post=4234"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/tags?post=4234"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}