Avaliação do Usuário

Estrela inativaEstrela inativaEstrela inativaEstrela inativaEstrela inativa
 

Usando banco de dados MySQL em linguagem C

 

 

Vários e vários projetos podem ser feitos de forma leve e altamente eficiente usando-se Linux, banco de dados, no caso o MySQL e a poderosíssima linguagem C.

 

Bom, vamos partir do ponto em que você tem o seu sistema operacional Linux atualizado, com o MySQL (para instalar no Debian aqui, e no Fedora aqui) e o GCC instalado.

 

Vamos instalar as bibliotecas do cliente MySQL:

 

 

{code}

apt-get install libmysqlclient-dev

{/code}

 

 

Crie o seguinte banco de dados (teste) e a seguinte tabela (teste) no seu MySQL:

 

 

{code}

create database teste;

use teste;

create table teste (

nome text,

idade int);

{/code}

 

 

Você pode sair ou mudar de console, vamos agora para a programação em C:

 

 

{code}

#include >stdio.h<

#include >mysql/mysql.h.h<

 

void main() {

MYSQL conexao;

mysql_init(&conexao);

if(mysql_real_connect(&conexão,”127.0.0.1”,”root”,”123456”,”teste”,0,NULL,0)) {

printf(“Conectado com sucesso!\n”);

} else {

printf(“Conexao falhou!\n”);

}

}

{/code}

 

 

Com MYSQL conexao criamos o objeto que receberá a conexão com o banco de dados.

 

Com mysql_init(&conexao) iniciamos as bibliotecas para uso do MySQL no programa.

 

Com mysql_real_connect(&conexão,”127.0.0.1”,”root”,”123456”,”teste”,0,NULL,0) realizamos a conexão com o servidor em localhost (127.0.0.1), com o usuário root, senha 123456 e banco de dados chamado teste (que criamos anteriormente).

 

Para compilar, assumindo que seu arquivo chame-se c_mysql.c, use:

 

 

{code}

gcc c_mysql.c –o c_mysql $(mysql_config –libs)

{/code}

 

 

Bom, para compilar o esquema é o de sempre para o gcc só acrescentamos o $(mysql_config –libs) que retorna as diretivas de compilação para as bibliotecas do MySQL a serem adicionadas ao programa.

 

Executando você terá a confirmação de que a conexão foi feita com sucesso. Caso contrário verifique o endereço, usuário, senha e nome do banco de dados.

 

Agora vamos continuar o programa e fazer uma inserção de dados no banco de dados:

 

 

{code}

#include >stdio.h<

#include >mysql/mysql.h.h<

 

void main() {

MYSQL conexao;

int ret;

mysql_init(&conexao);

if(mysql_real_connect(&conexão,”127.0.0.1”,”root”,”123456”,”teste”,0,NULL,0)) {

printf(“Conectado com sucesso!\n”);

ret = mysql_query(&conexao,”insert into teste(nome,idade) values (‘seu curso’,10);”);

if(ret) {

printf(“Falha ao inserir!\n”);

} else {

printf(“Insercao com sucesso!\n”);

}

mysql_close(&conexao);

} else {

printf(“Conexao falhou!\n”);

}

}

{/code}

 

 

A variável ret receberá o retorno do comando mysql_query que executa a query no banco de dados.

 

Caso ret seja 0 a inserção falhou, caso contrário a inserção foi feita com sucesso.

 

O comando mysql_close fecha a conexão com o banco de dados e libera o canal de comunicação.

 

Para compilar é o mesmo método já mostrado acima.

 

 

{code}

gcc c_mysql.c –o c_mysql $(mysql_config –libs)

{/code}

 

 

Agora vamos fazer uma consulta ao banco de dados:

 

 

{code}

#include >stdio.h<

#include >mysql/mysql.h.h<

 

void main() {

MYSQL conexao;

MYSQL_RES *result;

MYSQL_ROW lin;

MYSQL_FIELD *rs;

int ret;

mysql_init(&conexao);

if(mysql_real_connect(&conexão,”127.0.0.1”,”root”,”123456”,”teste”,0,NULL,0)) {

printf(“Conectado com sucesso!\n”);

ret = mysql_query(&conexao,”select * from teste;”);

if(ret) {

printf(“Falha ao inserir!\n”);

} else {

printf(“Insercao com sucesso!\n”);

result = mysql_store_result(&conexao);

if(result) {

rs = mysql_fetch_fields(result);

while((lin = mysql_fetch_row(result)) != NULL) {

printf(“%s\t%s\n”,lin[0],lin[1]);

}

}

}

mysql_close(&conexao);

} else {

printf(“Conexao falhou!\n”);

}

}

{/code}

 

 

Com a variável result temos o resultado da consulta. Com a variável lin teremos os registros do banco de dados e com a variável rs teremos o ResultSet da consulta.

 

Note que é preciso fazer a consulta primeiro (mysql_query) e depois extrair o resultado (mysql_store_result), para finalmente ler cada registro (mysql_fetch_row).

 

 

Os retornos são sempre do tipo String, por isso o %s em             printf(“%s\t%s\n”,lin[0],lin[1]);