Jump to content

[C] MySQL na linguagem C


_elf

Recommended Posts

Boas,

Tive a necessidade de utilizar o mysql num programa feito em C e andei à procura e encontrei este site que me ajudou imenso. Tenham em atenção que é necessario uma biblioteca que vem com o MySQL e também na compilação do programa visto ser preciso usar a tag -lmysqlclient.

http://www.vivaolinux.com.br/artigos/verArtigo.php?codigo=316

Deixo aqui o código que interessa mas leiam o site que explica melhor:

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

#define HOST "localhost"
#define USER "guest"
#define PASS "guest"
#define DB "teste"

int main(void)
{
  MYSQL conexao;
  MYSQL_RES *resp;
  MYSQL_ROW linhas;
   MYSQL_FIELD *campos;
   char query[]="SELECT * FROM aprendendo;";
   int conta; //Contador comum

   mysql_init(&conexao);
   if (mysql_real_connect(&conexao,HOST,USER,PASS,DB,0,NULL,0))
   {
      printf("Conectado com Sucesso!\n");
      if (mysql_query(&conexao,query))
         printf("Erro: %s\n",mysql_error(&conexao));
      else
      {
         resp = mysql_store_result(&conexao);//recebe a consulta
         if (resp) //se houver consulta
         {
            //passa os dados dos campos para a variável campos
            //escreve na tela os nomes dos campos dando
            //um tab somente
            campos = mysql_fetch_fields(resp);
             for (conta=0;conta<mysql_num_fields(resp);conta++) {
               printf("%s",(campos[conta]).name);
               if (mysql_num_fields(resp)>1)
                  printf("\t");
            }
            
            printf("\n");   

            //enquanto retonrnar registros, conta até o
            //número de colunas que a tabela tem e escreve na
            //tela com um tab, depois pula a linha e tenta
            //pegar outro registro
            while ((linhas=mysql_fetch_row(resp)) != NULL)
            {
               for (conta=0;conta<mysql_num_fields(resp);conta++)
                  printf("%s\t",linhas[conta]);
                   printf("\n");
            }
         }
         mysql_free_result(resp);//limpa a variável do resultado: resp
      }
      mysql_close(&conexao);
    }
    else
    {
      printf("Conexao Falhou\n");
      if (mysql_errno(&conexao))
      printf("Erro %d : %s\n", mysql_errno(&conexao), mysql_error(&conexao));
    }
   return 0;
}
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.