IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

C, sqlite & INSERT INTO


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 16
    Par défaut C, sqlite & INSERT INTO
    Bonjour,

    Je ne savais pas du tout où placer ma question. Faites moi savoir svp si je dois demander à faire déplacer ce sujet.

    Dans une boite de dialogue style formulaire, je recueille un const char* derrière un gtk_entry_get_text(). Après validation, je le récupère et l'affiche sans problème. Ensuite je veux insérer cette chaine de caractères dans une base de données avec sqlite.

    Voilà ce que j'ai recopié à partir d'un exemple : (http://manishtech.wordpress.com/2009...sqlite-with-c/)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
        int retval;
        int q_cnt = 5,q_size = 150,ind = 0;
        char **queries = malloc(sizeof(char) * q_cnt * q_size);
     
        sqlite3_stmt *stmt;
        sqlite3 *handle;
     
        retval = sqlite3_open("bdd.sqlite3",&handle);
     
        if(retval)
        {
            printf("Database connection failed\n");
            return -1;
        }
        printf("Connection successful\n");
     
        char create_table[100] = "CREATE TABLE IF NOT EXISTS people (id INTEGER PRIMARY KEY, nom TEXT)";
        retval = sqlite3_exec(handle,create_table,0,0,0);
        queries[ind++] = "INSERT INTO people VALUES(1, 'test_exemple')";
        retval = sqlite3_exec(handle,queries[ind-1],0,0,0);
     
     
        sqlite3_close(handle);
    Tout ceci fonctionne très bien. Maintenant je ne sais pas comment m'y prendre pour remplacer 'test_exemple' (qui est donc une chaine "fixée") par la chaine de caractère saisie dans le gtk_entry_get_text() (qui est donc ma variable).

    Cela par exemple ne marche pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
        const char *store;  //dont la valeur dépend de la saisie de l'utilisateur
        queries[ind++] = "INSERT INTO people VALUES(1, store)";
    Toutes les solutions que j'ai vues sont en php et j'ai été incapable de trouver une solution dans la documentation de sqlite.

    Merci pour votre aide.

    PS : je sais que ça n'a pas de sens d'utiliser une BDD pour une seule table à une seule colonne. C'est juste un exemple pour isoler mon problème.

  2. #2
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Je pense qu'il faut reconstituer la chaîne. Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    char chaine[....]; //avec un nombre de char suffisant
    strcpy(chaine, "INSERT INTO people VALUES(1, '");
    strcat(chaine, store);
    strcat(chaine, "')")
    queries[ind++] = chaine;

  3. #3
    Membre émérite Avatar de orfix
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 707
    Par défaut
    Ou sinon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    char chaine[...]; //avec un nombre de char suffisant
    sprintf(chaine, "INSERT INTO people VALUES(1, '%s')",store);
    queries[ind++] = chaine;

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 16
    Par défaut
    Super ! Un grand merci à vous deux !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 19/10/2006, 14h28
  2. probleme clé sequentiel avec insert into
    Par shake dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 08/06/2004, 15h54
  3. probleme d'INSERT INTO et JavaScript
    Par Matlight dans le forum Langage SQL
    Réponses: 3
    Dernier message: 04/03/2004, 15h36
  4. erreur SQL ...INSERT INTO
    Par naidinp dans le forum ASP
    Réponses: 20
    Dernier message: 18/09/2003, 11h38
  5. Insert Into + Date
    Par BoeufBrocoli dans le forum SQL
    Réponses: 10
    Dernier message: 13/08/2003, 11h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo