MySQL em C – Consultas

Bom dia,
Estou postando aqui um exemplo bem simples de uma conexão com banco de dados em C que realizei.
Bom o código esta todo comentado e dividido em funções para facilitar (eu acho) rsrs, rodei este código no Linux Ubuntu com o compilador “gcc” usando a seguinte instrução:

===================================
$ gcc connMysql.c -lmysqlclient -o connMysql
===================================

mais pra frente vou estar postando um exemplo para configurar o C no Ubuntu.
Enfim, segue um pequeno exemplo de como utilizar o mysql em C.

//**BIBLIOTECAS**//
#include<stdio.h>
#include<mysql/mysql.h>

//***LISTA DE PROTOTIPOS***//
MYSQL_RES *makeQuery(MYSQL conn,char *str);
void printRes(MYSQL_RES *res);
void freeRes(MYSQL_RES *res);

//***PRINCIPAL**//
int main(){
  MYSQL conn;//variavel de conexao
  MYSQL_RES *res;//variavel de resultado
  char *query = "select * from usuario_tbl;";//query de teste

  mysql_init(&conn);//INICIALIZA CONN

  //TENTA REALIZAR A CONEXAO CASO CONECTE FAZ
  if(mysql_real_connect(&conn,"127.0.0.1","user","password","banco",0,NULL,0))
  {
    printf("Conectedn");
    res = makeQuery(conn,query);//GUARDA O RESULTADO DA CONSULTA EM RES
    if(res){//SE A CONSULTA RETORNOU ALGO
      printRes(res);//IMPRIME
      freeRes(res);//E LIMPA RES
    }
  }else{//CASO A CONEXAO NAO DEU CERTO
    printf("Erro: %sn",mysql_error(&conn));//IMPRIME ERRO
  }

  mysql_close(&conn);//FEIXA CONEXAO COM O BANCO
  printf("Desconectn");

return 0;
}

//***FUNCAO PARA CONSULTA***/
MYSQL_RES *makeQuery(MYSQL conn,char *str){
  MYSQL_RES *res;//CRIA VARIAVEL TEMP DE RESULTADO
  MYSQL conexao;//CRIA VARIAVEL TEMP DE CONEXAO
  conexao = conn;//ATRIBUI PARA TEMP A CONN
  if(mysql_query(&conexao,str)){//REALIZA A CONSULTA
    printf("Erro: %sn",mysql_error(&conexao));//CASO NAO DE CERTO IMPRIME ERRO
  }else{//CASO DE CERTO A CONSULTA
    res = mysql_store_result(&conexao);//GUARDA O RESULTADO EM RES
    if(res){//SE HOUVER RESULTADO
      return res;//RETORNA RES
    }
  }
  return NULL;//NO CASO DE ERRO RETORNA NULL
}

//***FUNCAO PARA IMPRESSAO DE RESULTADO***//
void printRes(MYSQL_RES *res){
  MYSQL_ROW rows;//VARIAVEL DE LINHAS(VETOR) (AS TUPLAS DO BANCO)
  int cont;//CONTADOR
  //ENQUANTO AS LINHAS FOR DIFERENTE DE NULL FAZ
  while((rows=mysql_fetch_row(res)) != NULL){
    //REALIZA O FOR PARA CADA CAMPO DO VETOR DE LINHAS
    for(cont=0;cont<mysql_num_fields(res);cont++){
      printf("%st",rows[cont]);//IMPRIME
    }
    printf("n");
  }
}

//***FUNCAO PARA LIMPAR RES***//
void freeRes(MYSQL_RES *res){
  mysql_free_result(res);
}

Obrigado,
Guilherme B. Zarelli

Help DEV – Analista desenvolvedor Java / Android

http://helpdev.com.br/zarelli

One thought on “MySQL em C – Consultas

  1. Guilherme, não sei se lembra de mim, mas eu lembro de você no industrial, lembra do robo que criamos, eu andava com o perna de boneca…mas em fim, encontrei seu blog e vi o quanto você sabe de programação e preciso disso para meu novo projeto, então queria falar com você, me retorne um e-mail….obrigado

Deixe uma resposta

O seu endereço de email não será publicado Campos obrigatórios são marcados *

Você pode usar estas tags e atributos de HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>