Como Conectar ao MySQL com C/C++ no Windows

Tanto utilizando o Visual Studio como com GCC/g++ com MinGW via linha de comando.


Como Conectar ao MySQL com C/C++ no Windows

Esse vídeo/conteúdo faz parte do Curso de C++ Moderno Avançado e nele veremos como conectar ao MySQL com C e C++ no Windows tanto com o Visual Studio como com GCC/g++ MinGW.


Assista ao Vídeo


Conteúdo escrito


Instalação

Antes de mais nada você precisa ter o MySQL instalado no seu sistema, isso nós mostramos da maneira correta no artigo:

Como Instalar o MySQL no Windows

Detalhe não precisa instalar o PHP como tem no artigo, basta o MySQL, e o Apache é opcional!

Após tudo funcionando normalmente, você coseguindo logar no MySQL com o comando mysql -u root -p, agora precisamos saber que existem duas formas de conexão: pra C e pra C++:

Nesse tutorial eu irei usar, e recomendo, o MySQL Connector C, pois funciona tanto no C quanto no C++.

MySQL Connector C Visual Studio

Após devidamente instalado e logando normalmente no MySQL pela linha de comando ou com um cliente MySQL

Vamos seguir os passos com as imagens:


01-criar-projeto-vs

01-criar-projeto-vs


02-cpp-projeto-vazio-proximo

02-cpp-projeto-vazio-proximo


03-nome-do-projeto

03-nome-do-projeto


04-release-x64

04-release-x64


05-adicionar-novo-item

05-adicionar-novo-item


06-main-cpp-ou-Origem-cpp

06-main-cpp-ou-Origem-cpp


07-codigo-cpp

07-codigo-cpp


08-projeto-propriedades

08-projeto-propriedades


09-todas-config-x64

09-todas-config-x64


10-c-cpp-geral

10-c-cpp-geral


11-diretorio-de-inc-add-editar

11-diretorio-de-inc-add-editar


12-nova-linha

12-nova-linha


13-caminho-para-include-1

13-caminho-para-include-1


14-caminho-para-include-2

14-caminho-para-include-2


15-clica-linha-azul-cola-ok

15-clica-linha-azul-cola-ok


16-vinculador-geral

16-vinculador-geral


17-dir-bibli-adic-seta-editar

17-dir-bibli-adic-seta-editar


18-caminho-para-lib-1

18-caminho-para-lib-1


19-caminho-para-lib-2

19-caminho-para-lib-2


20-nova-linha-cola-ok

20-nova-linha-cola-ok


21-c-cpp-vinculador-entrada-seta-editar

21-c-cpp-vinculador-entrada-seta-editar


22-copia-so-nome-libmysql-lib

22-copia-so-nome-libmysql-lib


23-cola-o-nome-ok

23-cola-o-nome-ok


24-ok-preferencias

24-ok-preferencias


25-cin-get

25-cin-get

#include <iostream>
#include <mysql.h>

int main(){
  MYSQL *connect = mysql_init(NULL);
  !connect ? std::cerr << "MySQL NÃO foi iniciado.\n"
           : std::cout << "MySQL Conectado com sucesso!\n";
  mysql_close(connect);
  std::cin.get();
}

26-copia-a-libmysql

26-copia-a-libmysql


27-cola-dentro-do-seu-projeto-onde-esta-a-main-cpp

27-cola-dentro-do-seu-projeto-onde-esta-a-main-cpp


28-depurador-local-do-windows

28-depurador-local-do-windows


29-mysql-conectado-com-sucesso

29-mysql-conectado-com-sucesso.jpg


MySQL Connector C GCC/g++ MinGW

Nesse procedimento você pode usar qualquer Editor de Códigos/IDE, geralmente eu uso o VSCode ou Vim/Neovim

Ou seja, crie um código similar ao que vimos, mas não precisa do std::cin.get();:

Se quiser antes crie uma pasta em qualquer lugar do seu PC e entre nessa pasta.

#include <iostream>
#include <mysql.h>

int main(){
  MYSQL *connect = mysql_init(NULL);
  !connect ? std::cerr << "MySQL NÃO foi iniciado.\n"
           : std::cout << "MySQL Conectado com sucesso!\n";
  mysql_close(connect);
}

Agora copie a libmysql.dll(que está no caminho: C:\...libmysql.dll) para dentro da pasta onde está o arquivo main.cpp que você criou, salve e saia!

Para compilar e rodar o código, use os comandos abaixo de acordo com o que você usar, exemplos:

PowerShell:

Note que eu protegi o caminho com ‘ASPAS SIMPLES’, se estiver usando Windows Terminal, talvez “aspas duplas” pode não funcionar.

g++ .\main.cpp -I'C:\Program Files\MySQL\MySQL Server 8.0\include' -L'C:\Program Files\MySQL\MySQL Server 8.0\lib' -lmysql
.\a.exe

A provável saída será: MySQL Conectado com sucesso!.

CMD

Dessa vez eu usei “ASPAS DUPLAS”, agora no CMD talvez as ‘aspas simples’ é que não funcione!

g++ .\main.cpp -I"C:\Program Files\MySQL\MySQL Server 8.0\include" -L"C:\Program Files\MySQL\MySQL Server 8.0\lib" -lmysql
.\a.exe

Git Bash

No Git Bash tudo é diferente, é no estilo Unix e você pode usar o <Tab> para autocompletar os nomes dos caminhos:

g++ main.cpp -I /c/Program\ Files/MySQL/MySQL\ Server\ 8.0/include/ -L /c/Program\ Files/MySQL/MySQL\ Server\ 8.0/lib/ -lmysql
./a.exe

MySQL Connector C++

Se você preferir usar o MySQL Connector C++ o processo é quase o mesmo, só muda o caminho do include, lib e dll, mas o código não funciona em C, usa namespaces, basta seguir os mesmo passos para o Visual Studio, mas altere:

  • Nas Propriedades do Projeto em: C/C++ > Geral > Diretórios de Inclusão Adicionais, cole o caminho do Connector:
C:\Program Files\MySQL\Connector C++ 8.0\include\jdbc
  • Em Vinculador > Geral > Diretórios de Biblioteca Adicionais, adicione o caminho:
C:\Program Files\MySQL\Connector C++ 8.0\lib64i\vs14
  • E também em: Vinculador > Entrada > Dependências Adicionais, adicione a lib:
mysqlcppconn.lib
# Nome da lib: C:\Program Files\MySQL\Connector C++ 8.0\lib64\mysqlcppconn.lib
  • E copie as libs abaixo para dentro do seu projeto:
C:\Program Files\MySQL\Connector C++ 8.0\lib64 mysqlcppconn8-2-vs14.dll
C:\Program Files\MySQL\Connector C++ 8.0\lib64\mysqlcppconn-9-vs14.dll

Para testar a conexão crie um arquivo de teste:

#include <iostream>
#include <cppconn/driver.h>
#include <cppconn/exception.h>
#include <cppconn/prepared_statement.h>
#include <cppconn/resultset.h>
#include <cppconn/statement.h>
#include <mysql_connection.h>

auto main() -> int {
    sql::Driver* driver = get_driver_instance();
    try {
        std::unique_ptr<sql::Connection> con(
            driver->connect("HOST", "USUARIO", "SENHA")); // PREENCHA AQUI
        if (con != NULL) {
            std::cout << "MySQL Conectado com sucesso!\n";
            std::cin.get();
        }
    }
    catch (sql::SQLException& e) {
        std::cerr << "MySQL NÃO foi iniciado ou Credenciais incorretas.\n";
        return 1;
    }
}

Se usar o GCC/g++ MinGW copie também as DLL e use um comando similar: Exemplo: g++ .\main.cpp -I'C:\Program Files\MySQL\Connector C++ 8.0\include\jdbc' -L'C:\Program Files\MySQL\Connector C++ 8.0\lib64' -lmysqlcppconn.


Lembrando que se você estiver no Ubuntu com WSL ou VirtualBox você tem de instalar o MySQL usando esse procedimento e depois instalar o MySQL Connector C com esse comando:

sudo apt install libmysqlclient-dev
# Para o conector C++: sudo apt install libmysqlcppconn-dev libmysqlcppconn7v5

E o cabeçalho tem de ser #include <mysql/mysql.h>.


Nós realizamos um CRUD, além de outras dicas com C++ utilizando o MySQL Connector C no Curso de C++ Moderno Avançado. Adquira para obter o conteúdo completo:

https://terminalroot.com.br/cpp


Dependências:

Clientes SQL:

Links úteis:


windows mysql sql cpp linguagemc


Compartilhe


Nosso canal no Youtube

Inscreva-se


Marcos Oliveira

Marcos Oliveira

Desenvolvedor de software
https://github.com/terroo


Crie Aplicativos Gráficos para Linux e Windows com C++

Aprenda C++ Moderno e crie Games, Programas CLI, GUI e TUI de forma fácil.

Saiba Mais

Receba as novidades no seu e-mail!

Após cadastro e confirmação do e-mail, enviaremos semanalmente resumos e também sempre que houver novidades por aqui para que você mantenha-se atualizado!