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
    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 �clair�
    Inscrit en
    Mars 2002
    Messages
    97
    D�tails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 97
    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
    Par d�faut
    Merci le code que tu ma donn�e � r�solut le probl�me.

  4. #4
    Membre �prouv�
    Homme Profil pro
    VP of Research and Innovation
    Inscrit en
    Mai 2002
    Messages
    84
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 54
    Localisation : Canada

    Informations professionnelles :
    Activit� : VP of Research and Innovation

    Informations forums :
    Inscription : Mai 2002
    Messages : 84
    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.

+ 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