{"id":19210,"date":"2022-01-31T10:00:47","date_gmt":"2022-01-31T13:00:47","guid":{"rendered":"http:\/\/maurinsoft.com.br\/?p=19210"},"modified":"2022-01-31T10:00:47","modified_gmt":"2022-01-31T13:00:47","slug":"mysql-com-c-lazarus-python-php-r-parte-2","status":"publish","type":"post","link":"https:\/\/maurinsoft.com.br\/wp\/en\/mysql-com-c-lazarus-python-php-r-parte-2\/","title":{"rendered":"Mysql com C\/Lazarus\/Python\/PHP\/R \u2013 Parte 2"},"content":{"rendered":"<p>Neste segundo artigo iremos abordar como realizar um crud simples em C usando banco de dados Mysql como refer\u00eancia.<\/p>\n\n\n\n<p>No artigo anterior, tratamos de criar o banco de dados.<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-wp-embed is-provider-maurinsoft wp-block-embed-maurinsoft\"><div class=\"wp-block-embed__wrapper\">\nhttp:\/\/maurinsoft.com.br\/index.php\/2022\/01\/31\/mysql-com-c-lazarus-python-php-r-parte-1\n<\/div><\/figure>\n\n\n\n<p>Agora iremos tratar de algumas defini\u00e7\u00f5es do nosso projeto:<\/p>\n\n\n\n<p>Para facilitar o CRUD, iremos dividir em pequenos aplicativos, alias, essa divis\u00e3o deixa muito did\u00e1tica e f\u00e1cil de entender.<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>insPessoa.c &#8211; Inclui uma pessoa na tabela de pessoas<\/li><li>SelPessoa.c &#8211; Lista a rela\u00e7\u00e3o de pessoas<\/li><li>UpdPessoa.c &#8211; Atualiza os dados de uma pessoa da tabela de pessoa<\/li><li>remPessoa.c &#8211; Remove uma pessoa da tabela de pessoas<\/li><\/ul>\n\n\n\n<p>Com isso, finalizamos o crud e teremos alcan\u00e7ado nosso objetivo neste artigo.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"dependencias\">Depend\u00eancias<\/h2>\n\n\n\n<p>Iremos incluir aqui as depend\u00eancias necess\u00e1rias para seguir com este programa.<\/p>\n\n\n\n<p>Primeiro pedimos para seguir o primeiro tutorial, pois sem a instala\u00e7\u00e3o do mysql fica dificil implementar.<\/p>\n\n\n\n<p>Em seguida a instala\u00e7\u00e3o do ncurses, conforme o link abaixo:<\/p>\n\n\n\n<p><a rel=\"noreferrer noopener\" href=\"http:\/\/maurinsoft.com.br\/index.php\/2022\/01\/31\/instalando-ncurses\/\" target=\"_blank\">http:\/\/maurinsoft.com.br\/index.php\/2022\/01\/31\/instalando-ncurses\/<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"git-do-projeto\">GIT do Projeto<\/h2>\n\n\n\n<p>Estaremos modificando o git incluindo a pasta gcc, nela incluiremos todos os fontes do projeto.<\/p>\n\n\n\n<p><a href=\"https:\/\/github.com\/marcelomaurin\/mysql-vs-todos\">https:\/\/github.com\/marcelomaurin\/mysql-vs-todos<\/a><\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><img decoding=\"async\" src=\"http:\/\/maurinsoft.com.br\/wp-content\/uploads\/2022\/02\/image.png\" alt=\"\" class=\"wp-image-19254\"\/><figcaption>Inclus\u00e3o dos fontes dos projetos em C<\/figcaption><\/figure><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"comeca-o-jogo\">Come\u00e7a o Jogo!<\/h2>\n\n\n\n<p>Primeiro iremos criar o Makefile<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\nCC=gcc\nSOURCE_INS=insPessoa.c\nSOURCE_SEL=selPessoa.c\nSOURCE_DEL=delPessoa.c\nSOURCE_UPD=updPessoa.c\n\nLIBS= -lmysql -lncurses\n\nTARGET_INS=insPessoas\nTARGET_SEL=selPessoas\nTARGET_DEL=delPessoas\nTARGET_UPD=updPessoas\n\n\nall: clean compile install\n\nclean:\n\trm *.o\n\ncompile:\n\t$(CC) $(SOURCE_INS) -o $(TARGET_INS)\n\t$(CC) $(SOURCE_SEL) -o $(TARGET_SEL)\n\t$(CC) $(SOURCE_DEL) -o $(TARGET_DEL)\n\t$(CC) $(SOURCE_UPD) -o $(TARGET_UPD)\n\n\ninstall:\n\tcp $(TARGET_INS) \/usr\/local\/bin\/\n\tcp $(TARGET_SEL) \/usr\/local\/bin\/\n\tcp $(TARGET_DEL) \/usr\/local\/bin\/\n\tcp $(TARGET_UPD) \/usr\/local\/bin\/<\/code><\/pre>\n\n\n\n<p>Ao chamar o make, iremos compilar todos os fontes incluindo eles na pasta \/usr\/local\/bin, que permite executar em qualquer local que quisermos.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"explicacao-do-programa\">Explica\u00e7\u00e3o do programa<\/h2>\n\n\n\n<p>Este programa irei apresentar na integra, comentando os pontos principais.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#include &lt;stdio.h&gt;\n#include &lt;stdlib.h&gt;\n#include &lt;string.h&gt;\n#include &lt;mysql.h&gt;\n\n#define USER \"gcc\"\n#define HOST \"localhost\"\n#define DATABASE \"testedb\"\n#define PASS \"123456\"\n\n\n#define SUCCESS 0\n#define ERROR 1\n\nMYSQL *mycon;\n\/\/char PASS&#91;20];\nint res;\n\nint conecta(void){\n\tmycon = mysql_init(NULL);\n\t\/*\n\tmysql_real_connect(MYSQL *mysql,\n                   const char *host,\n                   const char *user,\n                   const char *passwd,\n                   const char *db,\n                   unsigned int port,\n                   const char *unix_socket,\n                   unsigned long client_flag)\n\t\t\t\t  *\/\n    \/\/mysql_options(mycon, MYSQL_READ_DEFAULT_FILE, (void *)\".\/my.cnf\");\n\tres = mysql_real_connect(\n\t\t\t\t  mycon,\n\t\t\t\t  HOST,\n\t\t\t\t  USER,\n\t\t\t\t  PASS,\n\t\t\t\t  DATABASE,\n\t\t\t\t  3306,\n\t\t\t\t  NULL,\n\t\t\t\t  0);\n\tif(res!=NULL)\n\t{\n\t\tprintf(\"Sucesso na conex\u00e3o com servidor\\n\");\n\t\treturn SUCCESS;\n\t}\n\telse {\n\t\tprintf(\"Falha na conexao! Erro:%s\\n\",mysql_error(mycon));\n\t\treturn ERROR;\n\t}\n}\n\n\/\/Estrutura de cadastro de pessoas\ntypedef struct PESSOAS {\n  int idpessoa;\n  char nome&#91;30];\n  char dtnasc&#91;20];\n  char profissao&#91;20];\n  char sexo;\n} PESSOAS;\n\n\n\nvoid desconecta(void){\n   mysql_close(mycon);\n   mysql_library_end();\n   printf(\"Desconectado\\n\");\n}\n\nint Select( PESSOAS *pes){\n  char sql&#91;500];\n  memset(sql,'\\0',sizeof(sql));\n  sprintf(sql,\"select * from pessoas where nome like '%%%s%%'\",\n       pes-&gt;nome\n\t );\n  printf(\"SQL:%s\\n\\n\",sql);\n  \/\/mysql_prepare(\n  res = mysql_query(mycon,sql);\n  if(!res) {\n\t  printf(\"Pesquisa com sucesso!\\n\");\n\t  MYSQL_RES *result = mysql_store_result(mycon);\n\n      if (!result) {\n        printf(\"Couldn't get results set: %s\\n\", mysql_error(mycon));\n      } else {\n        MYSQL_ROW row;\n        int i;\n        unsigned int num_fields = mysql_num_fields(result);\n\n        while ((row = mysql_fetch_row(result))) {\n          for (i = 0; i &lt; num_fields; i++) {\n            printf(\"%s, \", row&#91;i]);\n          }\n          putchar('\\n');\n        }\n\n        mysql_free_result(result);\n\t  }\n\n  }  else {\n\t  printf(\"Falha na pesquisa Error:%s\\n\",mysql_error(mycon));\n  }\n}\n\nvoid captura_dados(PESSOAS *pes){\n\tprintf(\"Digite as informa\u00e7\u00f5es que deseja pesquisar\\n\");\n\tprintf(\"==========================================\\n\");\n\tprintf(\"\\nNome:\");\n\tscanf(\"%s\",pes-&gt;nome);\n\tprintf(\"\\n\\n\");\n}\n\nvoid Wellcome(void){\n   printf(\"Software selPessoa\\n\");\n   printf(\"Criado por Marcelo Maurin Martins\\n\");\n   printf(\"Maurinsoft.com.br\\n\");\n   \/\/printf(\"Senha do banco:\");\n   \/\/scanf(\"%s\",PASS);\n}\n\n\/\/funcao principal\nvoid main(int argc, char *argv&#91;]){\n   Wellcome();\n   PESSOAS pessoa;\n   \/*Testa conexao*\/\n   if (conecta()==SUCCESS) {\n      captura_dados(&amp;pessoa);\n      Select(&amp;pessoa);\n      desconecta();\n   }\n}\n<\/code><\/pre>\n\n\n\n<p>A primeira parte importante \u00e9 a inclus\u00e3o da lib, que permite compilar os comandos do mysql<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>#include &lt;mysql.h&gt;<\/p><cite>Include da lib do mysql<\/cite><\/blockquote>\n\n\n\n<p>O outro ponto importante \u00e9 a declara\u00e7\u00e3o mycon.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>MYSQL *mycon;<\/p><cite>variavel de conex\u00e3o do mysq<\/cite><\/blockquote>\n\n\n\n<p>A mycon, \u00e9 um handle do mysql. Que permite identificar a comunica\u00e7\u00e3o do banco aberta no comando mysql_init.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>mycon = mysql_init(NULL);<\/p><cite>inicia a comunica\u00e7\u00e3o com o mysql<\/cite><\/blockquote>\n\n\n\n<p>Atribuindo acesso ao banco.<\/p>\n\n\n\n<p>O comando mysql_real_connect atribui usu\u00e1rio e senha a conex\u00e3o. Bem como estabelecendo um caminho entre o servidor correto.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>res = mysql_real_connect(\n              mycon,\n              HOST,\n              USER,\n              PASS,\n              DATABASE,\n              3306,\n              NULL,\n              0);<\/code><\/pre>\n\n\n\n<p>S\u00e3o os principais parametros, HOST (o ip do servidor), user (usu\u00e1rio do banco), PASS(senha do banco), DATABASE (banco de dados), PORTA (default 3306).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"mysql-query\">mysql_query<\/h2>\n\n\n\n<p>O <strong>mysql_query <\/strong>permite rodar os comandos, tanto select, como update, delete  e insert, ele \u00e9 o mais importante comando.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"para-nao-falar-em-videozinho\">Para n\u00e3o falar em v\u00eddeozinho<\/h2>\n\n\n\n<p>Segue a apresenta\u00e7\u00e3o dos programas rodando.<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-4-3 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Programa\u00e7\u00e3o MYSQL com C, CRUD\" width=\"1170\" height=\"878\" src=\"https:\/\/www.youtube.com\/embed\/-0y6ft0MN-k?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"referencias\">Refer\u00eancias<\/h2>\n\n\n\n<p><a href=\"https:\/\/dev.mysql.com\/doc\/c-api\/8.0\/en\/\">https:\/\/dev.mysql.com\/doc\/c-api\/8.0\/en\/<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/zetcode.com\/db\/mysqlc\/\">https:\/\/zetcode.com\/db\/mysqlc\/<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"artigos-relacionados\">Artigos Relacionados<\/h2>\n\n\n<ul class=\"wp-block-latest-posts__list wp-block-latest-posts\"><\/ul>","protected":false},"excerpt":{"rendered":"<p>Neste segundo artigo iremos abordar como realizar um crud simples em C usando banco de dados Mysql como refer\u00eancia. No artigo anterior, tratamos de criar o banco de dados. Agora iremos tratar de algumas defini\u00e7\u00f5es do nosso projeto: Para facilitar o CRUD, iremos dividir em pequenos aplicativos, alias, essa divis\u00e3o deixa muito did\u00e1tica e f\u00e1cil [&hellip;]<\/p>","protected":false},"author":1,"featured_media":244,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2,61,46,50,56],"tags":[113,261],"class_list":["post-19210","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog","category-c-c","category-mysql-treinamentos","category-programacao","category-shell-script","tag-c","tag-linux"],"_links":{"self":[{"href":"https:\/\/maurinsoft.com.br\/wp\/en\/wp-json\/wp\/v2\/posts\/19210","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/maurinsoft.com.br\/wp\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/maurinsoft.com.br\/wp\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/maurinsoft.com.br\/wp\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/maurinsoft.com.br\/wp\/en\/wp-json\/wp\/v2\/comments?post=19210"}],"version-history":[{"count":0,"href":"https:\/\/maurinsoft.com.br\/wp\/en\/wp-json\/wp\/v2\/posts\/19210\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/maurinsoft.com.br\/wp\/en\/wp-json\/"}],"wp:attachment":[{"href":"https:\/\/maurinsoft.com.br\/wp\/en\/wp-json\/wp\/v2\/media?parent=19210"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/maurinsoft.com.br\/wp\/en\/wp-json\/wp\/v2\/categories?post=19210"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/maurinsoft.com.br\/wp\/en\/wp-json\/wp\/v2\/tags?post=19210"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}