MYSQL com C
LINUX WINDOWS
MYSQL INSTALADO E FUNCIONADO
GCC DEV-CPP
#include <mysql.h> #include<winsock2.h>
#include<mysql/mysql.h>
Instalar a libmysql:
Compilar o arquivo.c
informando a biblioteca http://www.4shared.com/file/7LUIxhmH/libmysql-
lmysqlclient: 505-1sid.html?
gcc ARQUIVO.c -lmysqlclient -o ex-
mysql
Executar: ./ex-mysql Proceder no DEV-CPP conforme no ANEXO do
Slide:
http://www.4shared.com/office/sgTqLKN0/C_com_Mysql.html?
PASSOS NECESSÁRIOS PARA CONSTRUÇÃO DE C COM MYSQL
1. Inclusão do cabeçalho (header) do mysql.
#include <mysql.h>
2. Variáveis do MYSQL
a) MYSQL *con; // REPRESENTA A CONEXÃO
b) MYSQL_RES *res; // RESULTADOS DE COMANDOS
c) MYSQL_ROW row; // VETOR DE LINHAS TRAZIDAS NAS CONSULTAS
3. Variáveis que vão armazenar o servidor, usuário, senha, banco de dados:
a) char *server = “localhost”;
b) char *user = “root”;
c) char *password = “SENHA_do_USUÁRIO”; // 123
d) char *database = “Agenda”;
4. Inicializa a variável com para que possa ser utilizada.
con = mysql_init(NULL);
5. Compreender as Funções para manipulação do banco de dados
a) mysql_real_connect: Envia parâmetros de conexão com o banco:
servidor, login e senha do usuário.
Retorna 0 (zero) caso a conexão não foi bem sucedida.
Sintaxe:
mysql_real_connect(con, server, user, password, database, 0, NULL, 0))
onde:
a) con é a variável que inicia um canal de comunicação com o MYSQL ( Veja
passos 2 e 4);
b) server é o IP ou local do servidor de banco de dados (Veja passo 3 )
c) user é o usuário que fará a conexão com o banco de dados (Veja passo 3 )
d) password é a senha do usuário do item c (Veja passo 3 )
e) database é o nome do banco de dados para a conexão (Veja passo 3 )
f) demais parâmetros (0,NULL,0) indicam uso de porta padrão.
01) Exemplo de Inclusão de registro [INSERT]
mysql_query: envia uma solicitação (query) para o banco de dados ativo no
servidor informada na variável que criou a conexão ( con )
Protótipo: int mysql_query(MYSQL *mysql, const char *query)
mysql_query(con,"INSERT INTO TABELA(campos) values(valores);");
Exemplo:
mysql_query(con,"INSERT INTO CONTATOS(ID_CONTATO,NOME,TELEFONE)
values(13,'MADALENA FERNANDES', '33 99856767');");
obs: mysql_query retornará 0(zero) quando o comando foi bem sucedido;
02) Exemplo consultando registros [SELECT]
mysql_query(con,"SELECT campos FROM tabela where <condição>;");
Selecionar todos os dados de todos os clientes:
mysql_query(con,"SELECT * FROM CONTATOS;");
obs: mysql_query retornará 0(zero) quando o comando foi bem sucedido;
FUNÇÕES AUXILIARES
a) MYSQL_RES é uma estrutura capaz de armazenar o resultado de uma
instrução SQL.
Exemplo: MYSQL_RES *res;
b) mysql_store_result Lê todo o resultado de uma consulta e alocando-o em
uma estrutura MYSQL_RES;
Protótipo: MYSQL_RES *mysql_store_result(MYSQL *mysql)
Exemplo: res= mysql_store_result(con);
c) MYSQL_ROW: É uma estrutura para representação de dados em uma linha.
Sintaxe: MYSQL_ROW row; // row tem a capacidade de receber linhas
d) mysql_fetch_row Recupera o próximo registro (uma linha) do resultado
armazenado em uma variável MYSQL_RES e retorna para um tipo
MYSQL_ROW.
Protótipo: MYSQL_ROW mysql_fetch_row(MYSQL_RES *res)
Exemplo: row = mysql_fetch_row(rs);
Exemplo de uma seleção:
retorno_banco = mysql_query(con,"SELECT * FROM CONTATOS;");
if (retorno_banco==0)
{
res = mysql_store_result(con);
row = mysql_fetch_row(res);
while(row!=NULL)
{
printf("\n codigo: %s",row[0]);
printf(" nome: %s",row[1]);
printf(" tel.: %s",row[2]);
row = mysql_fetch_row(res);
}
}
CÓDIGO EXEMPLO COMPLETO NO DEV-CPP
#include<mysql/mysql.h>
#include<stdio.h>
#include<stdlib.h>
main()
{
int retorno_banco;
char *server = "localhost";
char *user = "root";
char *password = "";
char *database = "agenda";
MYSQL_RES *res;
MYSQL_ROW row;
MYSQL *con;
con = mysql_init(NULL);
if (!mysql_real_connect(con, server,user, password, database, 0, NULL, 0))
{
printf(" Não conectado !!! %s\n", mysql_error(con));
}
else
{
printf(" Conectado ao banco !!! %s\n", mysql_error(con));
}
system("\npause");
retorno_banco = mysql_query(con,"INSERT INTO CONTATOS(ID_CONTATO,NOME,TELEFONE) values(13,'MADALENA
FERNANDES', '33 99856767');");
if (retorno_banco==0)
{
printf(" Registro Inserido com SUCESSO ");
}
else
{
printf(" ERRO AO INSERIR ==> !!! %s\n", mysql_error(con));
}
retorno_banco = mysql_query(con,"SELECT * FROM CONTATOS;");
if (retorno_banco==0)
{
res = mysql_store_result(con);
row = mysql_fetch_row(res);
while(row!=NULL)
{
printf(" codigo: %s",row[0]);
printf(" nome: %s",row[1]);
printf(" tel.: %s\n",row[2]);
row = mysql_fetch_row(res);
}
}
system("pause");