Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
vamos trabalhar com
Banco de dados em “linguagem C” usando o SQLite vamos dar uma revisada
neste banco como não vejo muitos artigos brasileiros falando do mesmo.
aqueles que não gostam de estudar algoritmos com linguagem C, vão adorar
pois usando SQL podemos dar simples comandos para dar SORT e fazer buscas
de forma rápida sem pensar muito e atingir nosso objetivo fora que fica muito
mais organizado os dados usando SQLite…
/applications/core/interface/imageproxy/imageproxy.php?img=http://www.sqlite.org/images/SQLite.gif&key=3a03d93dbfb4cab392b36075bdb7b4f19936db17caf16d098713ec7f88203a3c" alt="Imagem Postada" />
O que é SQLite ?
SQLite é uma biblioteca C que implementa um banco de dados SQL embutido ou seja
SQLite é o servidor. A biblioteca SQLite lê e escreve diretamente para o arquivo
do banco de dados no disco.
Por que vamos usar SQLite?
SQLite foi escolhido para este artigo por não necessitar de
configurações complicadas e por sua instalação ser rapida e limpa…
Suporta bases de dados acima de 2 terabytes,O Banco de Dados é guardado em um único arquivo
e Sem dependências externas e outros motivos,É facil exportar dados,por ser rapido…
Como instalar ?
caso use windows ou queira instalar direto do tarball http://www.sqlite.org
linux debianos em geral “apt-get install sqlite3 libsqlite3-dev(biblioteca do C) sqlite3-doc(caso queira ler as doc)”
Slackers installpkg sqlite3_bla_bla.tgz,chapeis vermelhos e azuis “yum install sqlite”,Daemons,puffers
procure nos ports. caso use windows instale o cygwin e por ele o GCC…
Quem usa SQLite ?
Firefox,adobe,symbianOS,amarok entre outros…
Algumas características do SQLite:
. Software livre/domínio público e Multiplataforma;
. Mecanismo de armazenamento seguro com transações ACID;
. Não necessita de instalação, configuração ou administração;
. Implementa a maioria do SQL92;
. O Banco de Dados é guardado em um único arquivo;
. Suporta bases de dados acima de 2 terabytes;
. Sem dependências externas.
antes de continuar treine comandos SQL no SQLite crie tabelas etc…
/applications/core/interface/imageproxy/imageproxy.php?img=http://mob22.photobucket.com/albums/b309/NightHawkST3/Animated%2520GIFs/MegamanRockOn.gif&key=1803f10b0028bfd71886b4b9eea41f99f9a370302b916b7be0d6f87c66813345" alt="Imagem Postada" />
vamos iniciar com o Rock and Roll
Por que vamos usar SQLite com linguagem C ?
para fácilitar nossa vida para guardar dados de forma inteligente poder executar comandos SQL usando regex
entre outras milhares de utilidades,tendo tudo em mãos vamos ao primeiro exemplo de uso,antes de me perguntar
o que é isso tio Cooler_ ?
/applications/core/interface/imageproxy/imageproxy.php?img=http://mobmg.photobucket.com/albums/v350/zombie8/Other/Lilsloth.jpg&key=f0ff9f855667543c836c57b9024142a341410ac379442c5fd663d8b98d9d2128" alt="Imagem Postada" />
te falo
“Menino ta tudo comentado o código linha por linha então só ler e aprender”
// exemplo bu Antonio(Cooler)
// http://botecoUnix.com.br
#include <stdio.h>
// lib do SQLite
#include <sqlite3.h>
#include <stdlib.h>
#include <string.h>
#define MAX 20
int main(int argc, char** args) {
char *sql,nome[MAX],*end;
int retval,i;
int q_cnt = 5,q_size = 150,ind = 0;
char **queries = malloc(sizeof(char) * q_cnt * q_size); sqlite3_stmt *stmt;
sqlite3 *handle;printf("digite um nome para adicionar no banco\n");
getchar();
fgets(nome, MAX, stdin);
i = strlen(nome)-1;
if(nome[i] == '\n') {
nome[i] = '\0';
}
// vai adicionar no banco na tabela agenda no campo nome o nome digitado pelo usuario
sql = (char *)malloc( sizeof(char) * q_size );
strcpy(sql, "INSERT INTO agenda VALUES('" );
strcat(sql,nome); strcat(sql,"', '43432222')");
// em suma he uma query soh INSERT INTO agenda Values('STDIN(entrada do user)', 'numero_definido')
// executa nosso comando no banco
retval = sqlite3_exec(handle,sql,0,0,0);
// fecha a conexão
sqlite3_close(handle);
return 0;
}gcc seuprograma.c -o seuprograma -l sqlite3 -std=c99; ./seuprograma
se deu certo no seu banco chamado “agenda.sqlite3″ na tabela agenda vai ter um campo
com nome que vocẽ adicionou pelo nosso programa…
*-l usamos esta paradigma para definir a lib a ser usada em conjunto com nosso programa
*-std definimos o padrão C99 ou seja o padrão da linguagem C de 1999 um C ala K&R só que melhorado ou seja C++ segundo meu amigo IAK
este exemplo foi simples somente para adicionar um campo chamado nome em uma tabela chamada agenda
em que tenha (nome,tell),agora como seria para dar um SELECT ou seja mostrar o conteudo da tabela ? próximo
exemplo mostra uma solução
// Antonio (Cooler)
// http://botecoUnix.com.br
#include<stdio.h>
#include<sqlite3.h>
#include<stdlib.h>
int main(int argc, char** args) {
//definindo vars e mem
int retval;
int q_cnt = 5,q_size = 150,ind = 0;
char **queries = malloc(sizeof(char) * q_cnt * q_size);// criando o ponteiro para conectar
sqlite3 *handle;
// definindo nome do banco para conectar
retval = sqlite3_open("agenda.sqlite3",&handle);
// condição caso de erro
if(retval) { printf("erro na conexao com banco agenda.sqlite3\n"); return -1; }
printf("Coexao com banco ok\n");
// definimos a query SQL para uma busca simples enquanto tiver resultado ira nos mostrar as saidas
queries[ind++] = "SELECT * from agenda";
retval = sqlite3_prepare_v2(handle,queries[ind-1],-1,&stmt,0); if(retval)
{
printf("db selecionado com erro\n");
return -1;
}
// le numero de colunas
int cols = sqlite3_column_count(stmt);
while(1)
{
// retorna os statos
retval = sqlite3_step(stmt);
if(retval == SQLITE_ROW)
{
// nos retornando os resultados
for(int col=0 ; col<cols;col++)
{
const char *val = (const char*)sqlite3_column_text(stmt,col); printf("%s = %s\t",sqlite3_column_name(stmt,col),val);
}
printf("\n");
}
else if(retval == SQLITE_DONE)
{
// termina
printf("pronto\n");
break;
}
else
{
// caso ocorra algum erro
printf("algum erro\n");
return -1;
}
} sqlite3_close(handle);
return 0;
}/applications/core/interface/imageproxy/imageproxy.php?img=http://2.bp.blogspot.com/_gxCSewcw4eA/SbfsYSR_jyI/AAAAAAAAA-8/etWovLp0daQ/s320/barata.gif&key=14b4186b1a86894c2b96d720148ddec6a6383994e3d87b29bfa1d73ec893bd8c" alt="Imagem Postada" />
se até agora você não conseguiu compilar os programas aqui propostos é por que tem algum Bug, procure o erro
veja se você tem realmente a lib SQLite3 em “/usr/include” , caso tenha veja se tem algum erro de sintaxe…
Aqui usando um Debian lenny +GCC rodou tudo perfeitamente então baseado nisso de escolha
um “OS” decente para trabalhar…
agora só para finalizar nosso estudos com SQlite e linguagem C vamos fazer um programa que crie uma tabela
no seu banco com SQlite :)
#include<stdio.h>
#include<sqlite3.h>
#include<stdlib.h>
int main(int argc, char** args) {
int retval;
int q_cnt = 5,q_size = 150,ind = 0;
char **queries = malloc(sizeof(char) * q_cnt * q_size);// criando ponteiro leitor do banco
sqlite3 *handle;
// definimos local do banco sqlite
retval = sqlite3_open("agenda.sqlite3",&handle);
// condição caso de certo
if(retval) { printf("erro no banco\n"); return -1; }
printf("OK\n");
// nossa query para executar no banco
char create_table[100] = "CREATE TABLE users (nome varchar(30), senha varchar(12))";
// Executando a qury no banco
retval = sqlite3_exec(handle,create_table,0,0,0);
// fechando conexão
sqlite3_close(handle);
return 0;
}baby
bom pessoal espero ter ajudado ai programadores em C em geral ou iniciantes no mesmo a usar SQlite com C
bem, não estou postando com a mesma meta de sempre por que ando com uns problemas de saúde mas assim que eu
melhorar volto com tudo…
/applications/core/interface/imageproxy/imageproxy.php?img=http://mob666.photobucket.com/albums/vv25/ulidante_2009/1106280-1207739346-Megaman.gif&key=320a196c0b379f1b367c2347fb77ff5219a28f9006ab0d3ff4a55a5e9705f755" alt="Imagem Postada" />
agora sim em Aprendeu a Usar um Banco de dados relacional em C em ta feliz HUAhAHuH :)
mas isso foi padrão c99, em C mesmo eu fiz um agenda usando strcat quem quiser ver
esta no BugSec gruo que faço parte baixe aqui --> http://bugsec.googlecode.com/files/agenda.c
Dúvidas pessoal ?