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("Conected\n");
    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: %s\n",mysql_error(&conn));//IMPRIME ERRO
  }

  mysql_close(&conn);//FEIXA CONEXAO COM O BANCO
  printf("Desconect\n");

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: %s\n",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("%s\t",rows[cont]);//IMPRIME
    }
    printf("\n");
  }
}

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

Obrigado,
Guilherme B. Zarelli

Anúncios

Um comentário sobre “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 um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

w

Conectando a %s