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

WinDev Discussion :

Création de base MySQL par programmation et accès natif [WD14]


Sujet :

WinDev

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 14
    Points : 10
    Points
    10
    Par défaut Création de base MySQL par programmation et accès natif
    Bonjour à tous!

    Je souhaite créer une base MySQl par WLangage, pour éviter de passer par phpMyAdmin, j'ai trouvé ce code sur le forum de pc-soft
    http://forum.pcsoft.fr/thread.awp?gr...42#entry217463

    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
    nId est un entier  = SQLConnecte(GcoData..Serveur,GcoData..Utilisateur,gsGcoDataPassword,"","MySQL",hAccèsNatifMySQL) //,gsGcoDataInfosEtendues)
    SI nId <> 0 ALORS
        sNomDatabase est une chaîne = GcoData..BaseDeDonnées
        // création de la base de données
        sSql est une chaîne = "CREATE DATABASE IF NOT EXISTS %1"
        sSql = ChaîneConstruit(sSql,sNomDatabase)
        // execution de la requête
        SI PAS SQLExec(sSql,"REQ") ALORS
        SQLInfoGene()
        Erreur("La Database n'a pas pu être créée. Code erreur : " + SQL.Erreur +RC+...
        SQL.MesErreur)
        FIN
        SINON
        // La connexion a échoué : affichage d'un message explicatif
        SQLInfoGene()
        Erreur("La connexion à la source de données" + "localhost" + ...
        "a échoué."+RC+...
        "Code erreur : " + SQL.Erreur +RC+...
        SQL.MesErreur)
        Erreur("Veuillez vérifier les paramètres de connexion aux bases de données de la Caisse ")
        Ouvre(fen_parametresLocalFiche)
        RENVOYER Faux
        FIN
        // Dans tous les cas (connexion OK ou pas)
        SQLDeconnecte()
    je me connecte bien mais je reçois un message d'erreur du serveur qui me dit que j'ai un problème de syntaxe, alors que c'est celle préconisée par
    http://dev.mysql.com/doc/refman/5.0/...-database.html...

    Quelqu'un a déjà eu ce problème?

  2. #2
    Expert confirmé
    Homme Profil pro
    ?
    Inscrit en
    Juillet 2002
    Messages
    2 378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ?

    Informations forums :
    Inscription : Juillet 2002
    Messages : 2 378
    Points : 4 494
    Points
    4 494
    Par défaut
    Bonjour
    Comment est alimenté GcoData..BaseDeDonnées ?
    Tu es sur que ce n'est pas vide ?

    Fais un affichage du texte de ta requête pour vérifier

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 14
    Points : 10
    Points
    10
    Par défaut
    Effectivement, on peut ne pas déclarer la base de données et lancer un SQLExec, mais le problème de syntaxe persistait..

    J'ai donc trouvé une méthode plus "à l'arrache": en fait je me connecte à une base bidon, et bizarrement ça fonctionne:

    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
    PROCEDURE pg_creer_base(parpg_nombase)	// création de la base de données
     
    //HdecritConnexion(blablabla cnx_bidon...), et dans le code principal, déclarer //cette connexion
     
    HOuvreConnexion(cnx_bidon)
     
    vl_id_cnx_sql est un entier = SQLConnecte(cnx_bidon..Serveur,cnx_bidon..Utilisateur,vgprj_passebase,"","MySQL",hAccèsNatifMySQL)
     
    SI vl_id_cnx_sql=0 ALORS
    	SQLInfoGene()
    	DélaiAvantFermeture(1000)
    	Erreur("La connexion SQL n'a pu se faire. Code erreur : "+SQL.Erreur+RC+SQL.MesErreur)
    	RENVOYER Faux
    SINON
    	vl_chaine_sql est une chaîne = "CREATE DATABASE IF NOT EXISTS %1"
    	vl_chaine_sql=ChaîneConstruit(vl_chaine_sql,parpg_nombase) 
     
    	SI HExécuteRequêteSQL("REQ",cnx_bidon,hRequêteSansCorrection,vl_chaine_sql) ALORS	// exécution de la requête		//SQLExec
    		Info("Base créé sur MySql")
    		RENVOYER Vrai
    	SINON
    		SQLInfoGene()
    		Erreur("La Database n'a pas pu être créée. Code erreur : "+SQL.Erreur+RC+SQL.MesErreur)
    		RENVOYER Faux
    	FIN
    FIN
    Voilà, pour moi ça a fonctionné, c'est bien pratique!

  4. #4
    Expert confirmé
    Homme Profil pro
    ?
    Inscrit en
    Juillet 2002
    Messages
    2 378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ?

    Informations forums :
    Inscription : Juillet 2002
    Messages : 2 378
    Points : 4 494
    Points
    4 494
    Par défaut
    Houla
    Tu mélanges un peu tout dans ton code : les ordres SQL... et les ordres H...
    Il faut choisir
    Tu fais un SQLConnecte qui ne sert à rien puisque tu n'utilises pas de SQLExec derrière mais un HExécuteRequêteSQL
    Tu peux juste te contenter du SQLConnecte et du SQLExec,et pas besoin de cnx_bidon ou GcoData (qui ne sont utiles que pour les ordres H...)

    Ce code suffit à créer la base base_test :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    // Connexion sans spécifier la base
    SI SQLConnecte("ton_server", "ton_user", "ton_password", "", "MySql") <> 0 ALORS
    	// Création de la base
    	SI PAS SQLExec("CREATE DATABASE IF NOT EXISTS base_test", "REQ") ALORS
    		SQLInfoGene("REQ")
    		Erreur(SQL.MesErreur)
    	FIN
    SINON
    	SQLInfoGene()
    	Erreur(SQL.MesErreur)
    FIN

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 14
    Points : 10
    Points
    10
    Par défaut
    Ahh, c'est bien plus propre et ça marche nickel, je préfère, merci beaucoup!

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

Discussions similaires

  1. acces base mysql par jdbc via un proxy
    Par xavfree dans le forum JDBC
    Réponses: 4
    Dernier message: 23/07/2007, 15h48
  2. création de base mySQL avec python
    Par preacher_man dans le forum Bibliothèques tierces
    Réponses: 7
    Dernier message: 23/06/2006, 20h38
  3. [WD10] Changer l'adresse IP d'une base HF par programmation
    Par routmout dans le forum WinDev
    Réponses: 1
    Dernier message: 20/06/2006, 21h01
  4. création de plusieurs TEdit par programmation
    Par faten7 dans le forum C++Builder
    Réponses: 4
    Dernier message: 15/04/2006, 22h22
  5. [VB.NET][MySQL]ID insertion dans une base MySQL par ODBC
    Par leSeb dans le forum Windows Forms
    Réponses: 2
    Dernier message: 21/03/2006, 11h58

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