begin process at 2012 05 27 14:48:55
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Base de données

 > CONNEXION A UNE BD SQLITE

CONNEXION A UNE BD SQLITE


 Information sur la source

Note :
Aucune note
Catégorie :Base de données Classé sous :basedonnes, sqlite Niveau :Débutant Date de création :02/03/2007 Vu / téléchargé :10 075 / 770

Auteur : xtremejames183

Ecrire un message privé
Commentaire sur cette source (2)
Ajouter un commentaire et/ou une note

 Description

Ce code permet de connecter a une base de donne SQLite (une bd light rapide et tres securise ) et permet la creation de la bd "freak.db" s'il n'existe pas et ajoute une table et quelque information.
S'il le db est trouver dans le repertoire il retirer les donnes de la table MEMBERS et les afficher grace a une fonction recursif dans ce  cas s'est la fonction :
static int callback(void *NotUsed, int argc, char **argv, char **azColName) ;

Source

  • #include <stdio.h>
  • #include <stdlib.h>
  • #include <stdbool.h>
  • #include <errno.h>
  • #include <string.h>
  • #include <sys/types.h>
  • #include <sys/stat.h>
  • #include <sqlite3.h>
  • #include "sqldb.h"
  • #define DBNAME "./freak.db"
  • /* Creation de la table */
  • #define SQLTABLE "CREATE TABLE MEMBERS \
  • (ID INTEGER NOT NULL PRIMARY KEY ,NAME char(20) NOT NULL, \
  • PASSWORD varchar(32) NOT NULL, ACTIVE BOOLEAN, IP LONG ) ;"
  • #define SQLINSERT "INSERT INTO MEMBERS VALUES(%d,'%s','%s',%d,%d) ;"
  • #define SQLRETR "SELECT * FROM MEMBERS WHERE ID = %d ;"
  • int main(int argc, char *argv[])
  • {
  • sqlite3 *db;
  • int res;
  • char *err=0;
  • puts("Creating/Openning DB..");
  • if(exists_file(DBNAME)==false) {
  • res=sqlite3_open(DBNAME,&db); //creer la base de donner
  • if(res){
  • fprintf(stderr,"cannot create db:\n%s\n",sqlite3_errmsg(db));
  • sqlite3_close(db);
  • exit(EXIT_FAILURE); //error
  • }
  • create_first_table(db,err); // creation de la table MEMBERS dans la bd dreak.db
  • }
  • else {
  • /**
  • ouvrir le bd en mode lecture
  • */
  • res=sqlite3_open(DBNAME,&db);
  • if(res){
  • fprintf(stderr,"cannot open db:\n%s\n",sqlite3_errmsg(db));
  • sqlite3_close(db);
  • exit(EXIT_FAILURE); //error
  • }
  • puts("insertion");
  • insert_data(db,err,16,"alex","MD5(\"hello\")",1,1681651412); /* insertion des donnes
  • insert_data(db,err,18,"james","hello",0,127001);
  • puts("Selection des donnes");
  • retr_data(db,err,18); // selection des donnes
  • }
  • sqlite3_close(db);
  • system("PAUSE");
  • return 0;
  • }
  • /******************************************************************************/
  • bool create_first_table(sqlite3 *db,char *err)
  • {
  • int res=sqlite3_exec(db,SQLTABLE,callback,0,&err);
  • if(res!=SQLITE_OK)
  • {
  • fprintf(stderr,"Table creatiorn error:\n%s\n",err);
  • sqlite3_free(err);
  • return false;
  • }else {
  • puts("TABLE CREATED...");
  • sqlite3_free(err);
  • }
  • return true;
  • }
  • /******************************************************************************/
  • bool insert_data(sqlite3 *db,char *err,int id,char *name,char *pass,int tf,long ip)
  • {
  • int res;
  • const siz=200*sizeof(char)+1;
  • char *sql=(char *)malloc(siz);
  • if(sql==NULL) return false;
  • snprintf(sql,siz,SQLINSERT,id,name,pass,tf,ip);
  • res=sqlite3_exec(db,sql,NULL,0,&err); //INSERT NO CALLBACK NEEDED
  • if(res!=SQLITE_OK)
  • {
  • fprintf(stderr,"insertion error:\n%s\n",err);
  • sqlite3_free(err);
  • free(sql);
  • return false;
  • }else {
  • puts("DATA INSERTED...");
  • sqlite3_free(err);
  • }
  • free(sql);
  • return true;
  • }
  • /******************************************************************************/
  • void retr_data(sqlite3 *db,char *err,int id)
  • {
  • int res;
  • const siz=200*sizeof(char)+1;
  • char *sql=(char *)malloc(siz);
  • if(sql==NULL) return ;
  • snprintf(sql,siz,SQLRETR,id);
  • res=sqlite3_exec(db,sql,callback,0,&err);
  • if(res!=SQLITE_OK)
  • {
  • fprintf(stderr,"query error:\n%s\n",err);
  • sqlite3_free(err);
  • }else {
  • puts("DATA RETR...");
  • sqlite3_free(err);
  • }
  • free(sql);
  • }
  • /******************************************************************************/
  • /* Fonction recursif pour retirer les donnes */
  • static int callback(void *NotUsed, int argc, char **argv, char **azColName){
  • int i;
  • for(i=0; i<argc; i++){
  • printf("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL");
  • }
  • printf("\n");
  • return 0;
  • }
  • /******************************************************************************/
  • /* Verification de l'existance d'un fichier dans le disque */
  • bool exists_file( char *filen )
  • {
  • struct stat fst;
  • if ( stat( filen, &fst) == -1 )
  • return false; /* file doesnt exist! */
  • return true;
  • }
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <errno.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sqlite3.h>
#include "sqldb.h"

#define DBNAME      "./freak.db"

/* Creation de la table */
#define  SQLTABLE         "CREATE TABLE MEMBERS \
(ID INTEGER NOT NULL PRIMARY KEY ,NAME char(20) NOT NULL, \
PASSWORD varchar(32) NOT NULL, ACTIVE BOOLEAN, IP LONG ) ;"

#define  SQLINSERT        "INSERT INTO MEMBERS VALUES(%d,'%s','%s',%d,%d) ;"
#define  SQLRETR          "SELECT * FROM MEMBERS WHERE ID = %d ;"


int main(int argc, char *argv[])
{
  sqlite3     *db;
  int        res;
  char       *err=0;

  puts("Creating/Openning DB..");
         
  if(exists_file(DBNAME)==false) {
        res=sqlite3_open(DBNAME,&db); //creer la base de donner
  if(res){
           fprintf(stderr,"cannot create db:\n%s\n",sqlite3_errmsg(db));
           sqlite3_close(db);
           exit(EXIT_FAILURE); //error
           }                             

create_first_table(db,err); // creation de la table MEMBERS dans la bd dreak.db

}
else {
     /**
     ouvrir le bd en mode lecture 
   */
         res=sqlite3_open(DBNAME,&db);
  if(res){
           fprintf(stderr,"cannot open db:\n%s\n",sqlite3_errmsg(db));
           sqlite3_close(db);
           exit(EXIT_FAILURE); //error
           }
    puts("insertion");
    insert_data(db,err,16,"alex","MD5(\"hello\")",1,1681651412); /* insertion des donnes
    insert_data(db,err,18,"james","hello",0,127001);
    puts("Selection des donnes");
    retr_data(db,err,18); // selection des donnes
}
sqlite3_close(db);
 system("PAUSE");	
  return 0;
}
/******************************************************************************/
bool      create_first_table(sqlite3        *db,char          *err)
{

int res=sqlite3_exec(db,SQLTABLE,callback,0,&err);
if(res!=SQLITE_OK)
{
                  fprintf(stderr,"Table creatiorn error:\n%s\n",err);
                  sqlite3_free(err);
                  return false;
}else {
puts("TABLE CREATED...");
sqlite3_free(err);
}
return true;
}
/******************************************************************************/
bool insert_data(sqlite3 *db,char *err,int id,char *name,char *pass,int tf,long ip)
{
int  res;
const siz=200*sizeof(char)+1;
char *sql=(char *)malloc(siz);
if(sql==NULL) return false;

snprintf(sql,siz,SQLINSERT,id,name,pass,tf,ip);

res=sqlite3_exec(db,sql,NULL,0,&err); //INSERT NO CALLBACK NEEDED
if(res!=SQLITE_OK)
{
                  fprintf(stderr,"insertion error:\n%s\n",err);
                  sqlite3_free(err);
                  free(sql);
                  return false;
}else {
puts("DATA INSERTED...");
sqlite3_free(err);
}
free(sql);
return true;
}
/******************************************************************************/
void retr_data(sqlite3 *db,char *err,int id)
{
     int res;
const siz=200*sizeof(char)+1;
char *sql=(char *)malloc(siz);
if(sql==NULL) return ;

snprintf(sql,siz,SQLRETR,id);

res=sqlite3_exec(db,sql,callback,0,&err);
if(res!=SQLITE_OK)
{
                  fprintf(stderr,"query error:\n%s\n",err);
                  sqlite3_free(err);
}else {
       puts("DATA RETR...");
sqlite3_free(err);
}
free(sql);
}
/******************************************************************************/
/* Fonction recursif pour retirer les donnes */
static int callback(void *NotUsed, int argc, char **argv, char **azColName){
  int i;
  for(i=0; i<argc; i++){
    printf("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL");
  }
  printf("\n");
  return 0;
}
/******************************************************************************/
/* Verification de l'existance d'un fichier dans le disque */
bool exists_file( char *filen )
{
  struct stat fst;

  if ( stat( filen, &fst) == -1 )
   return false; /* file doesnt exist! */

  return true;
}

 Conclusion

Marche impec sous linux windows bsd ... si vous disposer de la bibliotheque sqlite3 que vous pouvez obtenir sur www.sqlite.org

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  •   sqlite
    • Makefile.winTélécharger ce fichier [Réservé aux membres club]813 octets
    • sqldb.cTélécharger ce fichier [Réservé aux membres club]Voir ce fichier3 358 octets
    • sqlDB.devTélécharger ce fichier [Réservé aux membres club]1 541 octets
    • sqlDB.ex_Télécharger ce fichier [Réservé aux membres club]434 504 octets
    • sqldb.hTélécharger ce fichier [Réservé aux membres club]Voir ce fichier907 octets
    • sqlDB.layoutTélécharger ce fichier [Réservé aux membres club]309 octets

Télécharger le zip


 Sources du même auteur

Source avec Zip Source avec une capture COMPRESSION FICHIERS ALGORITHME HUFFMAN C
Source avec Zip Source avec une capture CLEX ANALYSEUR LEXICALE DU LANGAGE C
ITOA FAIT MASION: COVERSION ENTIER 32 BIT NON SIGNE VERS CHA...
Source avec Zip COMBSORT ALGORITHME DE TRI SIMPLE RAPIDE NON-RECURSIF
Source avec Zip Source avec une capture SHAMAN LIBRAIRIE DE HASH SUPPORTANT SHA1 SHA256 SHA384 SHA51...

 Sources de la même categorie

GESTION DE FICHIER ET DOSSIER + AUTRES par shinji63
Source avec une capture CONVERTISSEUR par smartties
Source avec Zip CREATION D'UN FICHIER DBF (EN C) par Stanel
Source avec Zip STRUCTURE DES FICHIERS DBF par Stanel
Source avec Zip Source avec une capture GESTION DES ENTREES/ SORTIES AVEC CODEBARRE par YvaddavY

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture QBIBLIO GESTION DES PRÊTS par conatic
Source avec Zip Source avec une capture [WXWIDGETS] WXSQLITE+ 0.1 ALPHA - EXPLORATEUR DE FICHIER DE ... par fredcl

Commentaires et avis

Commentaire de BruNews le 02/03/2007 21:51:20 administrateur CS

Ta fonction callback() me semble être une fonction de rappel (d'où son nom 'callback'), je ne vois par contre pas trace ici de la moindre récursivité (ce qui est fort heureux d'ailleurs).

Commentaire de gergalp le 20/03/2007 16:26:27

la fonction de callback est appelée par la fonction sqlite_exec pour chaque ligne du résultat pour le traiter/stocker/mettre en forme/... selon les besoins du développeur :)

belle introduction à sqlite, dommage qu'il n'y ait pas plus de commentaires

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

SQLITE [ par Rololo ] Salut à tous,y-a-t il des personnes qui utilisent Sqlite comme base de données? J'aurais des questions à poser...@+Rololo conexion BDD avec une DLL [ par PHDM ] bonjour,désepéré .. c le cas .. je v exploser si sa continu !donc voici le probléme :je souhaite utiliser la DLL de SQLite (base de donné fichier) pou prrobleme sqlite en C, select [ par fdl1508 ] Bonsoir à tous, je suis bloquée dans une requete select sous sqlite en C, je ne vois vraiment pas pk ca ne marche pas, le but est d'afficher dans d sqlite avec java [ par bobyand ] bonsoir à tous, je suis nouveau au forum. je travaille dans une société dans une université allemande (boulot etudiant) et on me demande de programme


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,702 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales