{"id":61,"date":"2010-12-03T02:00:00","date_gmt":"2010-12-02T18:00:00","guid":{"rendered":"http:\/\/www.andreanolanusse.com\/pt\/dbxexpress-metadata-no-delphi-2009\/"},"modified":"2011-03-08T12:14:14","modified_gmt":"2011-03-08T04:14:14","slug":"criando-tabelas-atraves-dos-recursos-de-metadata-do-dbexpress-no-delphi","status":"publish","type":"post","link":"http:\/\/www.andreanolanusse.com\/pt\/criando-tabelas-atraves-dos-recursos-de-metadata-do-dbexpress-no-delphi\/","title":{"rendered":"Criando tabelas atrav\u00e9s dos recursos de metadata do dbExpress no Delphi"},"content":{"rendered":"<p>Um dos recursos mais legais do dbExpress \u00e9 a capacidade de criar tabelas, chaves prim\u00e1rias e chaves estrangeiras (foreign keys) atrav\u00e9s das classes do dbx metadata.<\/p>\n<p>O c\u00f3digo abaixo cria 2 tabelas: Country e State, adiciona chave prim\u00e1ria em ambas as tabelas e um relacionamento (foreign key) entre as duas, tudo &#8230;<\/p>\n<pre class=\"brush: delphi\">procedure CreateSchema(conn: TSQLConnection);\r\nvar\r\n  Provider: TDBXDataExpressMetaDataProvider;\r\n  Country, State: TDBXMetaDataTable;\r\n  IdCountryField,\r\n  IdField: TDBXInt32Column;\r\n  StrField : TDBXUnicodeVarCharColumn;\r\nbegin\r\n  Provider := DBXGetMetaProvider(conn.DBXConnection);\r\n\r\n  \/\/ Country\r\n  Writeln('Creating Table - Country ....................');\r\n  Country := TDBXMetaDataTable.Create;\r\n  Country.TableName := 'COUNTRY';\r\n\r\n  IdCountryField := TDBXInt32Column.Create('COUNTRYID');\r\n  IdCountryField.Nullable := false;\r\n  IdCountryField.AutoIncrement := true;\r\n  Country.AddColumn(IdCountryField);\r\n\r\n  StrField := TDBXUnicodeVarCharColumn.Create('COUNTRYNAME', 50);\r\n  StrField.Nullable := False;\r\n\r\n  Country.AddColumn(StrField);\r\n\r\n  Provider.CreateTable(Country);\r\n\r\n  \/\/ Set COUNTRYID as Primary Key\r\n  AddPrimaryKey(Provider, Country.TableName, IdCountryField.ColumnName);\r\n\r\n  \/\/ Set Unique Index for COUNTRYNAME\r\n  AddUniqueIndex(Provider, Country.TableName, StrField.ColumnName);\r\n\r\n  \/\/ State\r\n  Writeln('Creating Table - State ....................');\r\n  State := TDBXMetaDataTable.Create;\r\n  State.TableName := 'STATE';\r\n\r\n  IdField := TDBXInt32Column.Create('STATEID');\r\n  IdField.Nullable := false;\r\n  IdField.AutoIncrement := true;\r\n  State.AddColumn(IdField);\r\n\r\n  StrField := TDBXUnicodeVarCharColumn.Create('SHORTNAME', 2);\r\n  StrField.Nullable := False;\r\n  State.AddColumn(StrField);\r\n\r\n  StrField := TDBXUnicodeVarCharColumn.Create('STATENAME', 50);\r\n  StrField.Nullable := False;\r\n  State.AddColumn(StrField);\r\n\r\n  State.AddColumn(IdCountryField);\r\n\r\n  Provider.CreateTable(State);\r\n\r\n  \/\/ Set STATEID as Primary Key\r\n  AddPrimaryKey(Provider, State.TableName, idField.ColumnName);\r\n\r\n  \/\/ Set Unique Index for STATENAME\r\n  AddUniqueIndex(Provider, State.TableName, StrField.ColumnName);\r\n\r\n  AddForeignKey(Provider, State.TableName, IdCountryField.ColumnName,\r\n                Country.TableName, IdCountryField.ColumnName);\r\n\r\n  FreeAndNil(Provider);\r\n  FreeAndNil(Country);\r\n\r\nend;<\/pre>\n<p>Download do c\u00f3digo fontes completo <strong><a href=\"http:\/\/cc.embarcadero.com\/download.aspx?id=26210\" target=\"_blank\">aqui<\/a><\/strong>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Um dos recursos mais legais do dbExpress \u00e9 a capacidade de criar tabelas, chaves prim\u00e1rias e chaves estrangeiras (foreign keys) atrav\u00e9s das classes do dbx metadata. O c\u00f3digo abaixo cria 2 tabelas: Country e State, adiciona chave prim\u00e1ria em ambas as tabelas e um relacionamento (foreign key) entre as duas, tudo &#8230; procedure CreateSchema(conn: TSQLConnection); [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":781,"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":"","footnotes":""},"categories":[102],"tags":[33,181],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v16.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Criando tabelas atrav\u00e9s dos recursos de metadata do dbExpress no Delphi | Andreano Lanusse | Tecnologia e Desenvolvimento de Software<\/title>\n<meta name=\"description\" content=\"Um dos recursos mais legais do dbExpress \u00e9 a capacidade de criar tabelas, chaves prim\u00e1rias e chaves estrangeiras (foreign keys) atrav\u00e9s das classes do dbx\" \/>\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\/criando-tabelas-atraves-dos-recursos-de-metadata-do-dbexpress-no-delphi\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Criando tabelas atrav\u00e9s dos recursos de metadata do dbExpress no Delphi | Andreano Lanusse | Tecnologia e Desenvolvimento de Software\" \/>\n<meta property=\"og:description\" content=\"Um dos recursos mais legais do dbExpress \u00e9 a capacidade de criar tabelas, chaves prim\u00e1rias e chaves estrangeiras (foreign keys) atrav\u00e9s das classes do dbx\" \/>\n<meta property=\"og:url\" content=\"http:\/\/www.andreanolanusse.com\/pt\/criando-tabelas-atraves-dos-recursos-de-metadata-do-dbexpress-no-delphi\/\" \/>\n<meta property=\"og:site_name\" content=\"Andreano Lanusse | Tecnologia e Desenvolvimento de Software\" \/>\n<meta property=\"article:published_time\" content=\"2010-12-02T18:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2011-03-08T04:14:14+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/www.andreanolanusse.com\/pt\/wp-content\/uploads\/2010\/03\/Icon_Delphi.png\" \/>\n\t<meta property=\"og:image:width\" content=\"175\" \/>\n\t<meta property=\"og:image:height\" content=\"175\" \/>\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=\"1 minuto\">\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\/criando-tabelas-atraves-dos-recursos-de-metadata-do-dbexpress-no-delphi\/#primaryimage\",\"inLanguage\":\"pt-BR\",\"url\":\"http:\/\/www.andreanolanusse.com\/pt\/wp-content\/uploads\/2010\/03\/Icon_Delphi.png\",\"contentUrl\":\"http:\/\/www.andreanolanusse.com\/pt\/wp-content\/uploads\/2010\/03\/Icon_Delphi.png\",\"width\":175,\"height\":175},{\"@type\":\"WebPage\",\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/criando-tabelas-atraves-dos-recursos-de-metadata-do-dbexpress-no-delphi\/#webpage\",\"url\":\"http:\/\/www.andreanolanusse.com\/pt\/criando-tabelas-atraves-dos-recursos-de-metadata-do-dbexpress-no-delphi\/\",\"name\":\"Criando tabelas atrav\\u00e9s dos recursos de metadata do dbExpress no Delphi | Andreano Lanusse | Tecnologia e Desenvolvimento de Software\",\"isPartOf\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/#website\"},\"primaryImageOfPage\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/criando-tabelas-atraves-dos-recursos-de-metadata-do-dbexpress-no-delphi\/#primaryimage\"},\"datePublished\":\"2010-12-02T18:00:00+00:00\",\"dateModified\":\"2011-03-08T04:14:14+00:00\",\"description\":\"Um dos recursos mais legais do dbExpress \\u00e9 a capacidade de criar tabelas, chaves prim\\u00e1rias e chaves estrangeiras (foreign keys) atrav\\u00e9s das classes do dbx\",\"breadcrumb\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/criando-tabelas-atraves-dos-recursos-de-metadata-do-dbexpress-no-delphi\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"http:\/\/www.andreanolanusse.com\/pt\/criando-tabelas-atraves-dos-recursos-de-metadata-do-dbexpress-no-delphi\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/criando-tabelas-atraves-dos-recursos-de-metadata-do-dbexpress-no-delphi\/#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\/criando-tabelas-atraves-dos-recursos-de-metadata-do-dbexpress-no-delphi\/#webpage\"}}]},{\"@type\":\"Article\",\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/criando-tabelas-atraves-dos-recursos-de-metadata-do-dbexpress-no-delphi\/#article\",\"isPartOf\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/criando-tabelas-atraves-dos-recursos-de-metadata-do-dbexpress-no-delphi\/#webpage\"},\"author\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/#\/schema\/person\/620bd05e81598c3aba4781796cbe8903\"},\"headline\":\"Criando tabelas atrav\\u00e9s dos recursos de metadata do dbExpress no Delphi\",\"datePublished\":\"2010-12-02T18:00:00+00:00\",\"dateModified\":\"2011-03-08T04:14:14+00:00\",\"mainEntityOfPage\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/criando-tabelas-atraves-dos-recursos-de-metadata-do-dbexpress-no-delphi\/#webpage\"},\"commentCount\":12,\"publisher\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/#\/schema\/person\/620bd05e81598c3aba4781796cbe8903\"},\"image\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/criando-tabelas-atraves-dos-recursos-de-metadata-do-dbexpress-no-delphi\/#primaryimage\"},\"keywords\":[\"dbExpress\",\"Delphi\"],\"articleSection\":[\"Delphi\"],\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"http:\/\/www.andreanolanusse.com\/pt\/criando-tabelas-atraves-dos-recursos-de-metadata-do-dbexpress-no-delphi\/#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\/61"}],"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=61"}],"version-history":[{"count":0,"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/posts\/61\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/media\/781"}],"wp:attachment":[{"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/media?parent=61"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/categories?post=61"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/tags?post=61"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}