Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1532 connectés 

  FORUM HardWare.fr
  Programmation
  C

  utilisation de sqlite 3.0.7 sous C

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

utilisation de sqlite 3.0.7 sous C

n°877082
farad64
Skandal! oui, plutôt oui...
Posté le 19-10-2004 à 15:52:19  profilanswer
 

Bonjour, je suis actuellement en train de faire un petit programme sous LINUX en C utilisant le base de donnée SQLITE.
J'arrive à ouvrir une base, mettre des données à l'intérieur, créer une base, insérer des données MAIS Je n'arrive pas à afficher (ou mémoriser) le résultat d'une requete. En fait je n'arrive pas à utiliser une fonction du type "callback" comme décrite à l'adresse suivante: http://www.linux-mag.com/cgi-bin/p [...] le=compile
 
Si vous pouviez me donner un petit coup de main, ce serait sympa.
 
farad64

mood
Publicité
Posté le 19-10-2004 à 15:52:19  profilanswer
 

n°877087
cris56
Posté le 19-10-2004 à 16:00:39  profilanswer
 

ben montre ce que tu as deja fais
 
tu connais les pointeurs de fonctions ?

n°877094
farad64
Skandal! oui, plutôt oui...
Posté le 19-10-2004 à 16:06:32  profilanswer
 

Une minute j'envoie ça...

n°877097
farad64
Skandal! oui, plutôt oui...
Posté le 19-10-2004 à 16:09:11  profilanswer
 

voici le code que j'ai pour l'instant:
 
 
#include <stdio.h>
#include "lib/sqlite3.h"
#include <stdlib.h>
 
sqlite3* db;
char *errmsg=NULL;
 
/*------------------------------------------------------------------------------------------------------------------*/
 
void affichage_erreur(char *erreur)
   {
   if (erreur)
      {
      printf("Erreur: %s\n",erreur);
      free(erreur);
      }
   }
   
/*-----------------------------------------------------------------------------------------------------------------*/
 
int afficher_resultats()
   {
   puts("Resultats de la requete" );
   printf("momo\n" );
   return 0;
   }
   
/*------------------------------------------------------------------------------------------------------------------*/
 
void ouverture_base()
   {
   puts("ouverture de la base: base.db" );
   sqlite3_open("base.db",&db);
   puts("la base est ouverte" );
   getchar();
   }
   
/*------------------------------------------------------------------------------------------------------------------*/
 
void creation_table()
   {
   puts("Création de la table: table1" );
   sqlite3_exec(db,"create table table1(one varchar(10),two smallint);",0,0,&errmsg);
   affichage_erreur(errmsg);
   puts("Table créée" );
   getchar();
   }
   
/*------------------------------------------------------------------------------------------------------------------*/
 
void insertion_donnees()
   {
   puts("Insertion de données dans table1" );
   sqlite3_exec(db,"insert into table1 values('vive',10);",0,0,&errmsg);
   affichage_erreur(errmsg);
   sqlite3_exec(db,"insert into table1 values('sqlite',20);",0,0,&errmsg);
   affichage_erreur(errmsg);
   sqlite3_exec(db,"insert into table1 values('et c',30);",0,0,&errmsg);
   affichage_erreur(errmsg);
   puts("Données insérées" );
   getchar();
   }
   
/*------------------------------------------------------------------------------------------------------------------*/
 
void requete()
   {
   sqlite3_exec(db,"SELECT * FROM table1;",afficher_resultats,0,&errmsg);
   affichage_erreur(errmsg);
   }
/*-----------------------------------------------------------------------------------------------------------------*/    
void fermeture_base()
   {
   puts("Fermeture de la base: base.db" );
   sqlite3_close(db);
   affichage_erreur(errmsg);
   puts("Base de données fermée" );
   getchar();
   }
   
/*------------------------------------------------------------------------------------------------------------------*/
 
int main(int argc, char *argv[])
   {
   ouverture_base();
 
   creation_table();
 
   insertion_donnees();
   
   requete();
 
   fermeture_base();
 
   return 0;
 
   }
/*-------------------------------------------------------------------------------------------------*/

n°877098
farad64
Skandal! oui, plutôt oui...
Posté le 19-10-2004 à 16:10:05  profilanswer
 

Je connais un peu les pointeurs mais "pointeur de fonction" ça ne me dit rien.

n°877117
cris56
Posté le 19-10-2004 à 16:21:29  profilanswer
 

tu définies une fonction
 
int callback(void *pArg, int argc, char **argv, char **columns)
{
 }
 
 
et apres tu passes son adresse (son nom) à une autre fonction
 
sqlite_exec_printf(db, result[1], callback, &rows, &error, arg);
 
qui l'appelera pour traiter chaque ligne de la requete, mais ca doit etre indiquée dans la doc j'imagine
 
edit : tu peux aller voir la declarartion de sqlite_exec_printf dans le fichier d'entete, le parametre correspondant est un pointeur sur une fonction ayant ce prototype


Message édité par cris56 le 19-10-2004 à 16:25:48
n°877124
farad64
Skandal! oui, plutôt oui...
Posté le 19-10-2004 à 16:26:50  profilanswer
 

Et dans tous ces paramètres lequel contient les données ?

n°877137
cris56
Posté le 19-10-2004 à 16:32:29  profilanswer
 

je dirais result
 
c'est vrai que la doc est assez barbante à lire, regarde si yen a pas une mieux, sinon faut quand meme se la taper

n°877145
farad64
Skandal! oui, plutôt oui...
Posté le 19-10-2004 à 16:36:18  profilanswer
 

l'autre problème c'est que si j'utilise sqlite_exec_printf, gcc me renvoie une erreur "implicit declaration". En consultant la bibliothèque de sqlite je n'ai pas trouvé cette fonction. entre ça et la doc que j'ai du mal à comprendre, je suis un peu perdu...

n°877154
cris56
Posté le 19-10-2004 à 16:39:08  profilanswer
 

"implicit declaration" ca veut dire qu'il trouve pas la delcaration


Message édité par cris56 le 19-10-2004 à 16:39:24
mood
Publicité
Posté le 19-10-2004 à 16:39:08  profilanswer
 

n°877162
farad64
Skandal! oui, plutôt oui...
Posté le 19-10-2004 à 16:43:34  profilanswer
 

ben justement, si la fonction est inexistante dans la bibliothèque, je ne peux pas l'utiliser comme ça et comme dans la doc je ne l'ai vue nulle part non plus, c'est qu'il y a un pb.

n°877221
cris56
Posté le 19-10-2004 à 17:28:23  profilanswer
 

a ok, ta bibliotheque est à jour ?


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  utilisation de sqlite 3.0.7 sous C

 

Sujets relatifs
utilisation de syneditutilisation de <address>
Utilisation d'une BDD sous Visual en local.je viens d'instaler delphi6, ma premiere utilisation, aidez moi please
De l'utilisation du string (42,'*')Libraire OpenSSL - Problème d'utilisation
Problème d'utilisation des ressources avec l'editeur de VC++.NET :'([access] utilisation d'une requete qui reflète une table.
Utilisation de l'UC?Utilisation de windir systemroot
Plus de sujets relatifs à : utilisation de sqlite 3.0.7 sous C


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR