Utilizando o MySQL em uma aplicação C \| TreinaWeb               Promoção no ar   Matricule-se agora e garanta **54% de desconto**  

  Termina em   Tempo restante da oferta: 15 Horas 

 44 Min 

 35 Seg 

   Tempo restante da oferta: 15 44 35 

  [Assinar →](https://www.treinaweb.com.br/checkout/pagamento/plano/anual?cupom=TW-SCLIENTE26) 

   [                ](https://www.treinaweb.com.br)  Explorar  

 [ Quanto custa? ](#assinatura) [ FAQ ](https://www.treinaweb.com.br#faq) [Matricule-se](#assinatura) [ Entrar ](https://www.treinaweb.com.br/login) 

     [ Início ](https://www.treinaweb.com.br) [ Artigos ](https://www.treinaweb.com.br/blog) Utilizando o MySQL em uma aplicação C  [ Desenvolvimento Back-end ](https://www.treinaweb.com.br/blog/categoria/desenvolvimento-back-end) 

# Utilizando o MySQL em uma aplicação C

 Veja as configurações necessárias para utilizar o MySQL em uma aplicação C.

 [ Wladimilson M. Nascimento ](https://www.treinaweb.com.br/blog/autor/wladimilson-m-nascimento) 6 anos atrás

  ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/04/utilizando-o-mysql-em-uma-aplicacao-c.png)  

Atualmente, praticamente todas as aplicações necessitam persistir dados. Algo que antigamente poderia ser feito com arquivos de textos, hoje o padrão é o uso de um banco de dados. Há várias opções de [sistemas de gerenciamento de banco de dados (SGBD)](https://www.treinaweb.com.br/blog/os-principais-sgbds-relacionais/), sendo que o que mais se destaca é o MySQL, devido a sua facilidade e natureza aberta. Assim, neste artigo veremos como utilizar o MySQL em uma aplicação C.

# MySQL

O MySQL é um sistema de gerenciamento de banco de dados (SGBD) relacional, open source e gratuito. Atualmente pertencente a Oracle, este banco de dados é amplamente utilizado em pequenas aplicações, além de ser a escolha de grandes empresas, como: NASA, HP, Sony, Nokia, Google, entre outras.

Este sucesso vem da sua facilidade de uso e sua natureza multiplataforma, podendo ser utilizado em qualquer sistema operacional. Por isso foi o banco escolhido para ser demonstrado aqui.

[  ![MySQL - Desenvolvedor](https://d2knvm16wkt3ia.cloudfront.net/assets/svg-icon/mysql.svg)   Curso MySQL - Desenvolvedor Conhecer o curso ](https://www.treinaweb.com.br/curso/mysql-desenvolvedor)

# Instalando o banco de dados

O processo de instalação do banco irá depender do seu sistema operacional. Não importando a plataforma, o instalador dele pode ser baixado em: https://dev.mysql.com/downloads/mysql/. Entretanto recomendo o uso do instalador apenas no Windows.

Caso esteja no MacOS, baixe o banco via Homebrew com o comando abaixo:

```shell
brew install mysql

```

No Linux, em distribuições baseadas no Ubuntu, utilize o comando abaixo:

```shell
sudo apt install mysql-server

```

Já em distribuições baseadas no Red Hat, CentOS, etc, utilize o comando abaixo:

```shell
sudo yum install mysql-community-server

```

No Windows, faça uso do [MySQL Installer](https://dev.mysql.com/downloads/windows/installer/8.0.html) e selecione a opção **Server Only**:

![MySQL Installer com a opção Server Only](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/04/MySQL-Installer_server_only.png)

Desta forma será instalado apenas o banco de dados.

No MySQL Installer, após a instalação do banco será exibida a tela de configuração dele, nela é importante que a senha do usuário root seja informada:

![MySQL Installer informando a senha do usuário root](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/04/MySQL-Installer_root_password.png)

Salve esta senha porque ela será utilizada posteriormente.

Nas demais plataformas, o usuário é criado sem senha.

## Obtendo bibliotecas de conexão

Para que a linguagem C consiga se conectar ao banco de dados, ela necessita utilizar as bibliotecas de conexão do banco. No caso do MySQL, existem bibliotecas diferentes para cada sistema operacional.

No caso do Windows, estas bibliotecas são adicionadas junto do servidor, assim, não é necessário que elas sejam baixadas posteriormente. Mas caso queira fazer uso apenas delas, não é necessário instalar o banco de dados completo. No MySQL Installer, você pode optar pela opção **Client only**:

![MySQL Installer com a opção Client Only](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/04/MySQL-Installer_client_only.png)

Que será utilizado o conector do C++, que pode ser utilizado em aplicações C.

No caso do MacOS, a biblioteca de conexão pode ser instalada com o comando abaixo:

```shell
brew install mysql-client

```

No Linux, via apt, utilize o comando:

```shell
sudo apt-get install libmysqlclient

```

E via Yum, utilize o comando:

```shell
yum install mysql-community-libs

```

Com o banco e as bibliotecas de conexão instaladas, podemos configurar a nossa aplicação C.

[  ![C Intermediário](https://d2knvm16wkt3ia.cloudfront.net/assets/svg-icon/c.svg)   Curso C Intermediário Conhecer o curso ](https://www.treinaweb.com.br/curso/c-intermediario)

## Configurando o MySQL no projeto

Dependendo da IDE, a configuração do MySQL pode variar, aqui vou fazer uso do Code::Blocks no Windows. Entretanto, a configuração desta IDE é a mesma nos demais sistemas operacionais.

No Code::Blocks, crie um novo projeto do tipo **Console Application**:

![Criação de um projeto Console Application no Code::Blocks](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/04/code_blocks_create_console_appplication.png)

Com o projeto criado, clique com o botão direito do mouse sobre ele e selecione a opção **Build options…**:

![Exibindo a opção Build options… de um projeto no Code::Blocks](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/04/code_blocks_build_options.png)

Na tela apresentada, na aba **Search directories**, em **Compiler**, informe o caminho da pasta **include** do conector ou do servidor (no Windows):

![Exibindo a tab Compiler na aba Search Directories na tela Build Options…](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/04/code_blocks_build_options_search_directories_compiler.png)

Na imagem acima a pasta não se encontra no caminho padrão, este caminho pode variar de acordo com o sistema, geralmente é:

- **Windows**: C:\\Program Files\\MySQL\\x.xx\\include
- **MacOS**: /usr/local/Cellar/mysql/x.xx/include
- **Linux**“: /usr/local/mysql/include

Na aba **Linker** informe o caminho da pasta **lib**:

![Exibindo a tab Linker na aba Search Directories na tela Build Options…](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/04/code_blocks_build_options_search_directories_linker.png)

Agora na aba **Linker settings**, no Windows, informe arquivos **.lib** presentes na pasta **lib**:

![Exibindo a aba Linker Settings na tela Build Options…](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/04/code_blocks_build_options_linker_settings.png)

Caso esteja no MacOS, informe os arquivos **.dylib** e no Linux (qualquer distribuição), informe os arquivos **.so**.

Não se esqueça de repetir o mesmo procedimento para o **Release**.

## Criando um banco de dados

Com o MySQL instalado e configurado ao projeto, podemos nos conectar ao banco pelo código. Para exemplificar isso, vamos criar um banco de dados:

```c
#include 
#include 

int main(int argc, char **argv)
{
  MYSQL *conn = mysql_init(NULL);

  if (mysql_real_connect(conn, "localhost", "root", "1234",
          NULL, 0, NULL, 0) == NULL)
  {
      fprintf(stderr, "%s\n", mysql_error(conn));
      mysql_close(conn);
      exit(1);
  }

  if (mysql_query(conn, "CREATE DATABASE TWDATA"))
  {
      fprintf(stderr, "%s\n", mysql_error(conn));
      mysql_close(conn);
      exit(1);
  }

  mysql_close(conn);
  exit(0);
}

```

Inicialmente é adicionado o include do MySQL

```c
#include 

```

Ele que nos fornece todas as funções necessárias para se conectar ao banco e executar os códigos.

Assim, inicialmente o conector do MySQL é iniciado:

```c
MYSQL *conn = mysql_init(NULL);

```

E nos conectamos ao banco:

```c
if (mysql_real_connect(conn, "localhost", "root", "1234",
          NULL, 0, NULL, 0) == NULL)
{
   fprintf(stderr, "%s\n", mysql_error(conn));
   mysql_close(conn);
   exit(1);
}

```

A função **mysql\_real\_connect**, recebe por parâmetro, respectivamente: um objeto MySQL, host, usuário, password, database, porta, socket e flag. Caso ocorra algum problema com a conexão, ela irá retornar `NULL`, e neste caso, exibimos a mensagem no console:

```c
fprintf(stderr, "%s\n", mysql_error(conn));

```

E finalizamos a aplicação

```c
exit(1);

```

Se não ocorrer nenhum erro, criamos o banco de dados:

```c
if (mysql_query(conn, "CREATE DATABASE TWDATA"))
{
  fprintf(stderr, "%s\n", mysql_error(conn));
  mysql_close(conn);
  exit(1);
}

```

Note que é utilizada a função `mysql_query`, que recebe por parâmetro um objeto MySQL e a query que deve ser executada no banco.

Ao executar o código, se não ocorrer nenhum erro, nenhuma mensagem será exibida:

![Tela do console com nenhuma mensagem](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/04/code_blocks_create_database.png)

Podemos verificar a criação do banco no MySQL.

![Listagem dos bancos do MySQL com o banco criado.](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/04/mysql_show_databases.png)

Com a função `mysql_query` é possível executar qualquer tipo de query, mas veremos isso no nosso próximo artigo. Até lá.

- [ #C ](https://www.treinaweb.com.br/blog/tag/c)
- [ #MySQL ](https://www.treinaweb.com.br/blog/tag/mysql)
- [ #Code::Blocks ](https://www.treinaweb.com.br/blog/tag/codeblocks)

Autor

 ![Wladimilson M. Nascimento](//secure.gravatar.com/avatar/f0dd442f156a3eacd2880e9cd0eafbd1?d=mm)

## Wladimilson M. Nascimento

 Instrutor, nerd, cinéfilo e desenvolvedor nas horas vagas. Graduado em Ciências da Computação pela Universidade Metodista de São Paulo. 

 [Todos os artigos](https://www.treinaweb.com.br/blog/autor/wladimilson-m-nascimento)  

## Continue estudando

 Transforme leitura em prática com os cursos e formações da TreinaWeb.

 [Ver cursos](https://www.treinaweb.com.br/cursos)   

  Continue lendo

## Artigos relacionados

- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2020/08/hybrid-orm-repodb-no-asp-net-core-400x280.png)  [ C# ](https://www.treinaweb.com.br/blog/categoria/csharp) 

     6 anos atrás

    ##  [ Utilizando o hybrid ORM RepoDb em uma aplicação ASP.NET Core ](https://www.treinaweb.com.br/blog/utilizando-o-hybrid-orm-repodb-em-uma-aplicacao-asp-net-core) 

     Um meio termo entre o Dapper e o Entity Framework, o hybrid ORM RepoDb é uma ótima opção de ORM para aplicações intermediárias.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2018/01/01132725/PETAPOCO-400x280.png)  [ C# ](https://www.treinaweb.com.br/blog/categoria/csharp) 

     9 anos atrás

    ##  [ Utilizando o Micro ORM PetaPoco em uma aplicação ASP.NET Core ](https://www.treinaweb.com.br/blog/utilizando-o-micro-orm-petapoco-em-uma-aplicacao-asp-net-core) 

     Aprenda a utilizar o Micro ORM PetaPoco em uma aplicação ASP.NET Core.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2017/11/06103205/orm-lite-400x280.jpg)  [ C# ](https://www.treinaweb.com.br/blog/categoria/csharp) 

     9 anos atrás

    ##  [ Utilizando o Micro ORM ServiceStack.OrmLite em uma aplicação ASP.NET Core ](https://www.treinaweb.com.br/blog/utilizando-o-micro-orm-servicestack-ormlite-em-uma-aplicacao-asp-net-core) 

     Aprenda na prática como fazer uso do micro framework ORM ServiceStack.OrmLite em uma aplicação ASP.NET Core.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2017/10/entity-framework-core-com-mysql-400x280.jpg)  [ C# ](https://www.treinaweb.com.br/blog/categoria/csharp) 

     9 anos atrás

    ##  [ Entity Framework Core com MySQL ](https://www.treinaweb.com.br/blog/entity-framework-core-com-mysql) 

     Veja um exemplo de como se conectar ao MySQL no Entity Framework Core.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2019/11/04160959/instalador-aplicacoes-windows-400x280.png)  [ Desenvolvimento Back-end ](https://www.treinaweb.com.br/blog/categoria/desenvolvimento-back-end) 

     7 anos atrás

    ##  [ Criando um instalador para distribuir suas aplicações Windows ](https://www.treinaweb.com.br/blog/criando-um-instalador-para-distribuir-suas-aplicacoes-windows) 

     Existe uma gama de ferramentas que permitem a criação de um instalador do Windows. Neste artigo veja como criar um de forma simples utilizando o Inno Setup.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/08/deploy-de-uma-aplicacao-spring-boot-no-heroku-400x280.png)  [ Java ](https://www.treinaweb.com.br/blog/categoria/java) 

     5 anos atrás

    ##  [ Deploy de uma aplicação Spring Boot no Heroku ](https://www.treinaweb.com.br/blog/deploy-de-uma-aplicacao-spring-boot-no-heroku) 

     Neste artigo veremos como podemos realizar o deploy de uma aplicação Spring Boot na nuvem com o Heroku.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2018/08/17172630/desenvolvedor-web-400x280.png)  [ Desenvolvimento Back-end ](https://www.treinaweb.com.br/blog/categoria/desenvolvimento-back-end) 

     8 anos atrás

    ##  [ Quatro habilidades para se tornar um desenvolvedor web back-end ](https://www.treinaweb.com.br/blog/quatro-habilidades-para-se-tornar-um-desenvolvedor-web-back-end) 

     Conheça as habilidades necessárias para se tornar um bom desenvolvedor web back-end.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2020/12/npm-voce-sabe-o-que-da-para-fazer-com-ele-400x280.png)  [ Node ](https://www.treinaweb.com.br/blog/categoria/node-js) 

     3 anos atrás

    ##  [ Introdução ao gerenciamento de projetos Node.js com npm ](https://www.treinaweb.com.br/blog/introducao-ao-gerenciamento-de-projetos-node-js-com-npm) 

     Neste artigo sobre Introdução ao gerenciamento de projetos Node.js vamos aprender os principais comandos utilizados no npm.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2023/05/NEST-JS-UPLOAD-ARQUIVOS-400x280.png)  [ Node ](https://www.treinaweb.com.br/blog/categoria/node-js) 

     3 anos atrás

    ##  [ Trabalhando com Prisma ORM e NestJS ](https://www.treinaweb.com.br/blog/trabalhando-com-prisma-orm-e-nestjs) 

     Neste artigo vamos aprender os primeiros passos para trabalhar com o Prisma ORM e o NestJS.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2019/07/05112250/SPRING-BOOT-400x280.png)  [ Desenvolvimento Back-end ](https://www.treinaweb.com.br/blog/categoria/desenvolvimento-back-end) 

     7 anos atrás

    ##  [ Criando uma API REST com o Spring Boot ](https://www.treinaweb.com.br/blog/criando-uma-api-rest-com-o-spring-boot) 

     Todos os passos da criação de uma API REST com o framework Spring Boot do Java, no Visual Studio Code.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2019/11/04160957/EXECUTAVEL-APLICACAO-JAVA-400x280.png)  [ Java ](https://www.treinaweb.com.br/blog/categoria/java) 

     7 anos atrás

    ##  [ Criando um executável para uma aplicação Java ](https://www.treinaweb.com.br/blog/criando-um-executavel-para-uma-aplicacao-java) 

     Aprenda como transformar uma aplicação Java Desktop em um arquivo executável.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/06/NODE-SQUELIZE-MYSQL-400x280.png)  [ Javascript ](https://www.treinaweb.com.br/blog/categoria/javascript) 

     5 anos atrás

    ##  [ Usando Sequelize ORM com Node e Express ](https://www.treinaweb.com.br/blog/usando-sequelize-orm-com-node-e-express) 

     Vamos aprender a configurar uma aplicação com banco de dados MySQL usando Sequelize ORM com Node.js e Express.

     Ler artigo

## Um ano de acesso total para você viver de programação.

 Todos os cursos e formações da TreinaWeb numa única assinatura, com professores que atuam no mercado, suporte direto e certificados. Do primeiro `console.log` ao mercado de trabalho.

- **1 ano** de acesso a **todos os cursos**
- Cursos novos **toda semana**
- Suporte **direto com professores**
- Plano de carreira **personalizado**
- **Certificados digitais** inclusos
- **Aplicativos** para Android e iOS, com **acesso offline**

    **Garantia incondicional de satisfação** 

 Teste por 7 dias e, se não fizer sentido para você, devolvemos seu dinheiro.

### Acesso completo a todos os cursos e dezenas de Formações.

 12 meses 

  Economize R$ 840,00  54% OFF 

 de 12x R$ 129,00 por apenas

 12x  R$ 59,00

 sem juros no cartão de crédito ou R$ 599,00 à vista

  Oferta termina em  **15h 44min 35s**

- Acesso imediato e ilimitado durante 1 ano.
- Plano de carreira personalizado.
- Suporte direto com professores.
- E muito mais!

 [Matricule-se agora](https://www.treinaweb.com.br/checkout/pagamento/plano/anual?cupom=TW-SCLIENTE26)

     [                ](https://www.treinaweb.com.br)

 Escola online de programação, tecnologia e IA.

- [  ](https://www.facebook.com/TreinaWeb/)
- [  ](https://www.instagram.com/treinaweb/)
- [  ](https://www.youtube.com/user/TreinaWeb)
- [  ](https://twitter.com/treinaweb)
- [  ](https://www.linkedin.com/company/treinaweb)
- [  ](https://github.com/treinaweb)

## Inscreva-se em nossa newsletter

Receba lançamentos, promoções e novidades.

   Seu nome     Seu WhatsApp     Seu melhor e-mail   Inscrever-se 

## Cursos

- [ Base para Devs ](https://www.treinaweb.com.br/categoria/base-para-devs)
- [ Front-end ](https://www.treinaweb.com.br/categoria/desenvolvimento-front-end)
- [ Back-end ](https://www.treinaweb.com.br/categoria/desenvolvimento-back-end)
- [ Mobile ](https://www.treinaweb.com.br/categoria/desenvolvimento-mobile)
- [ Bancos de Dados ](https://www.treinaweb.com.br/categoria/bancos-de-dados)
- [ Cloud ](https://www.treinaweb.com.br/categoria/cloud-computing)
- [ IA ](https://www.treinaweb.com.br/categoria/ia)
- [ E mais ](https://www.treinaweb.com.br/categoria/e-mais)
- [ Ver todos os cursos ](https://www.treinaweb.com.br/cursos)

## Conteúdo

- [ Formações ](https://www.treinaweb.com.br/formacoes)
- [ Projetos práticos ](https://www.treinaweb.com.br/projetos-praticos)
- [ Direto ao ponto ](https://www.treinaweb.com.br/direto-ao-ponto)
- [ Planos ](https://www.treinaweb.com.br#assinatura)
- [ Depoimentos ](https://www.treinaweb.com.br#depoimentos)
- [ Comunidade ](https://www.treinaweb.com.br#comunidade)
- [ Corpo docente ](https://www.treinaweb.com.br#docente)

## A empresa

- [ Sobre a TreinaWeb ](https://www.treinaweb.com.br#sobre)
- [ Perguntas frequentes ](https://www.treinaweb.com.br#faq)
- [ Vantagens de estudar na TreinaWeb ](https://www.treinaweb.com.br/vantagens-de-estudar-na-treinaweb)
- [ Cursos para empresas ](https://www.treinaweb.com.br/empresas)
- [ Sugira um novo curso ](https://www.treinaweb.com.br/sugerir-curso)
- [ Trabalhe conosco ](https://www.treinaweb.com.br/trabalhe-conosco)
- [ Artigos ](https://www.treinaweb.com.br/blog)
- [ Desenvolvedores e agentes ](https://www.treinaweb.com.br/developers)
- [ Contato ](https://www.treinaweb.com.br/contato)
- [ Política de privacidade ](https://www.treinaweb.com.br/politica-de-privacidade)
- [ Termos de uso ](https://www.treinaweb.com.br/termos-de-uso)

## Baixe nosso aplicativo

 [   Disponível na **App Store**  ](https://apps.apple.com/us/app/treinaweb/id1322729447) [   Disponível no **Google Play**  ](https://play.google.com/store/apps/details?id=br.com.treinaweb.mobile) 

  Av. Paulista, 1765, Conj 71 e 72 · Bela Vista · São Paulo · SP · 01311-200   © 2004 – 2026 TreinaWeb Tecnologia LTDA · CNPJ 06.156.637/0001-58
