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++Builder Discussion :

Probleme C++Builder et Mysql [FAQ]


Sujet :

C++Builder

  1. #1
    Candidat au Club
    Inscrit en
    juin 2002
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : juin 2002
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Probleme C++Builder et Mysql
    Le code si dessous est sensé lire dans un fichier une liste (se son des pays) et les mettres dans Mysql mais pour une réson que j'ignore au 49eme pays j'ai une erreur "guillemet droit manquant".

    Si quelqu'un voie se qui fait buguer mersi d'avance pour sa solution.

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    void __fastcall TForm_accueil::Button_ModifierClick(TObject *Sender)
    {
        double temps=timeGetTime();
     
        String pays;
        char *fichier;
        int lon=194,numero;
     
        int FileHandle = FileOpen ("liste des pays sans la fin.txt", fmOpenRead);
     
        if (FileHandle >= 0 )
       {
            int FileSize   = FileSeek (FileHandle, 0, 2);
            FileSeek( FileHandle,0,0 );
     
            fichier = new char[FileSize+1];
     
            FileRead(FileHandle, fichier, FileSize); //lecture du fichier
     
            FileClose (FileHandle);
        }
     
        String Stfichier=AnsiString(fichier);
        int i=0,pivo=0;
        int NbCaract = Stfichier.Length();
        bool test=false;
        bool Sortie=false;
     
        for(numero=0;numero<=lon;)
       {
            do 
            {
                test=Stfichier.IsDelimiter("\n", i);
                if (test == true )
                {
                    pays = Stfichier.SubString( pivo+1,i-pivo-2 );
                    pivo=i;
                    Sortie=true;
                }
                i++;
            }while( Sortie != true && i <= NbCaract);
     
            numero++;
     
                Query1_MIL->Close();
                Query1_MIL->SQL->Clear();
                Query1_MIL->SQL->Add("INSERT INTO pays(Numero,Liste_Pays)"
                                     " VALUES ( '"+AnsiString(numero)+"','"+pays+"')");
                Query1_MIL->ExecSQL();
                test=false;
                Sortie=false;
     
        }
     
        delete [] fichier;
        double temps2=timeGetTime();
        Label_temps->Caption=AnsiString(temps2-temps);
    }

  2. #2
    Membre régulier
    Inscrit en
    mars 2002
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : mars 2002
    Messages : 97
    Points : 71
    Points
    71
    Par défaut
    regarde si ton 49eme pays comporte une apostrophe, dans ce cas il faudrait soit la doubler avant de faire ta requête, soit dans ta requête délimiter tes noms de payes par des guillemets à la place d'apostrophe, pour ce faire il faut utiliser le caractère d'echappement '\' .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Query1_MIL->SQL->Add("INSERT INTO pays(Numero,Liste_Pays)" " VALUES ( \""+AnsiString(numero)+"\",\""+pays+"\")");

  3. #3
    Candidat au Club
    Inscrit en
    juin 2002
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : juin 2002
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Merci le code que tu ma donnée à résolut le probléme.

  4. #4
    Membre régulier
    Homme Profil pro
    Inscrit en
    mai 2002
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : mai 2002
    Messages : 84
    Points : 109
    Points
    109
    Par défaut
    Bonjour,

    2 petites choses :
    La premiére -> j'utilise un stingreplace pour doubler mes guillemets :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    StringReplace(strBuffer, "'", "''", TReplaceFlags() << rfReplaceAll)
    Mon champ reste donc identique à ce que je veux faire.

    La deuxieme -> tu ajoutes dans la base 1 enregistrement à la fois.
    Pour ma part, j'utilise une base MySQL pour une application ou je dois ajouter des milliers d'enregistrements (voire des millions) et je les ajoute par paquet de 500.
    En fait, ma requete est contruite dans la boucle de lecture et tous les 500 records, elle part vers le serveur.
    C'est sans commune mesure au niveau vitesse.
    A ta disposition
    Christophe MERLIER

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

Discussions similaires

  1. [C++BUILDER ET MYSQL]
    Par saidus dans le forum C++Builder
    Réponses: 2
    Dernier message: 26/09/2005, 08h48
  2. [SGBD] Probleme Avec Php et Mysql
    Par junior258 dans le forum Installation
    Réponses: 2
    Dernier message: 20/09/2005, 10h39
  3. Probleme Sauvegarde-Restauration avec MySql Administrator
    Par Christophe Charron dans le forum Administration
    Réponses: 7
    Dernier message: 26/07/2005, 08h25
  4. c ++ Builder et MySQL
    Par p59polo dans le forum C++Builder
    Réponses: 8
    Dernier message: 06/05/2004, 20h15

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