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 :

Sql Serveur et Mysql [Fait]


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2008
    Messages : 73
    Par défaut Sql Serveur et Mysql
    Salut tout le monde,

    Mon projet gère les connexions à une base de données en SQL Server 2005, mais maintenant on me demande de gérer une base Myql...

    J'arrive bien à me connecter aux deux et à lire/écrire dedans, pour ça no problème. Le problème viens du fait que je suis soit sur une base soit sur l'autre. Ca dépendra de l'utilisateur finale.
    Dois je refaire toutes mes requetes SQL Server en Mysql, ou y a t'il un moyen de faire à de manière moins longue? (ya bien 200a requetes...).

    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
     
    SqlCommand command = new SqlCommand("", connection);
                MySqlCommand command2 = new MySqlCommand("", conn);
                label62.Text = sourcename;
     
                //Test pour savoir si la base existe
                try
                {
                    if (SGBD == "Mysql")
                    {
                        conn.ChangeDatabase("Simulateur");
                    }
                    else
                    {
                        connection.ChangeDatabase("Simulateur");
                    }
                }
    {
                    ///****************************************************************//
                    // Création de la table automate//
                    // requete type pour créer une base //
                    if (SGBD == "Mysql")
                    {
                        command2.CommandText = "CREATE DATABASE Simulateur";
                        command2.ExecuteNonQuery();
                    }
                    else
                    {
                        command.CommandText = "CREATE DATABASE Simulateur";
                        command.ExecuteNonQuery();
                    }
    P.S : Et scusez moi si je pose trop de question 'bête' mais je suis un stagiaire débutant totale en C# qui dois faire un logiciel complet....

  2. #2
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 202
    Par défaut
    si les requetes ont le meme texte dans tous les cas, il est possible de factoriser le code d'accès et d'envoyer juste la requete as string à une procédure et d'avoir un paramètre dans ton appli qui dit sur quelle base tu es

    il est possible d'instancier donc soit un SqlCommand soit un MySqlCommand
    et le traiter as DBCommand ensuite, en théorie les 2 hérite de ce dernier
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre chevronné
    Inscrit en
    Décembre 2008
    Messages
    256
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Décembre 2008
    Messages : 256
    Par défaut
    Tu es chanceux, Microsoft a travaillé pour toi

    Jette un oeil à la classe DbProviderFactory et particulièrement à la méthode GetFactory(). En lui passant en paramètre le type de base que tu as choisi, elle te retourne un DbProviderFactory qui correspond à ta base.
    Ce DbProviderFactory est une factory classique qui a des méthodes statiques CreateCommand, CreateConnection, CreateParameter...

  4. #4
    Membre chevronné
    Inscrit en
    Décembre 2008
    Messages
    256
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Décembre 2008
    Messages : 256
    Par défaut
    Une p'tite remarque:

    Si tu as beaucoup de code SQL à gérer, ou du code de création genre CREATE DATABASE, CREATE TABLE, CREATE INDEX... je te conseille de le mettre à part dans un fichier texte (extension .sql).
    Tu pourras ainsi soit l'exécuter directement sur ton SGDB, soit le charger dans ton programme C# pour l'exécuter (avec un TextReader, par exemple), mais au moins il sera indépendant de ton programme, et tu n'auras pas à recompiler ton exe si une ligne de SQL doit changer.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2008
    Messages : 73
    Par défaut
    Merci pour vos infos même si je n'ai pas tout compris ^^, j'ai trouvé un tuto qui a l'air assez complet :
    http://johannblais.developpez.com/tu...acces-donnees/

    Z'en pensez quoi?

  6. #6
    Membre Expert Avatar de callo
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2004
    Messages
    887
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Togo

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 887
    Par défaut
    Citation Envoyé par Clydopathe Voir le message
    Merci pour vos infos même si je n'ai pas tout compris ^^, j'ai trouvé un tuto qui a l'air assez complet :
    http://johannblais.developpez.com/tu...acces-donnees/

    Z'en pensez quoi?
    Le tuto "Bonnes pratiques pour les accès aux données" de saumonagile ? c'est du bon

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2008
    Messages : 73
    Par défaut
    C'est surement du bon mais pour un total noob comme moi , c'est pas facile du tout, mais je pense avoir compris le principe.

    Enfin je pense....

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2008
    Messages : 73
    Par défaut
    J'ai cru avoir trouvé une solution , l'avantage de mon projet est que je sais avec exactitude sur quelle base je vais travailler.
    -SqlServer
    -MySql

    J'ai crée une classe Bdonnée, et dedans j'ai mis mes fonction de lecture écriture de données.

    Ici se trouve le choix de la connexion:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    IDbConnection connect = null; //Création de la variable générale de connexion 
    IDbCommand comm = null; //Création de la commande générale
    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
     
    if (Nbase == "Sqlserveur")
                    {
                        sourcename = System.Environment.MachineName; sourcename += "\\SQLEXPRESS";//nom par defaut du server
                        connect = null;
                        SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder("server=" + sourcename + "; Integrated Security=SSPI;");
                        connect = new SqlConnection(builder.ConnectionString);
                        connect.Open();
                    }
                    else if (Nbase == "Mysql")
                    {   
                        sourcename = "LocalHost";
                        string strConn = String.Format("server=localhost;user id=root; password=test; database=Mysql; pooling=false");
                        //Definition de la connexioon
                        connect = new MySqlConnection();
                        connect.ConnectionString = strConn;
                        //Ouverture de la connexion sur la base
                        connect.Open();                 
                    }

    et là l'écriture des infos générales:

    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
     
    try
                {                              
                        connect.ChangeDatabase(database);      
                }
                //Si on n'arrive pas à se connecter alors on crée une nouvelle base
                catch
                {
     
                    // Création de la table automate//
                    // requete type pour créer une base //
                    Sqlwrite("CREATE DATABASE Simulateur");
     
     
                    //On change la cible pour tout créer
                    connect.ChangeDatabase("Simulateur");
     
                        //requete type pour créer une table //
                        //table Automate
                 }
    Désolé pour la longueur du post ou si c'est mal expliqué.

    Bon ben en fait ca marche pas, j'ai comme qui dirais vendu la peau de l'ours avant de l'avoir tué....
    Quand j'arrive sur le SqlWrite j'ai ce joli message:

    System.NullreferenceException :La référence d'objet n'est pas définie à une instance d'un objet.

    Je vois pas d'ou ca peux venir, une idée peut etre?

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

Discussions similaires

  1. Convertir une base de données SQL Serveur en MySql
    Par sheira dans le forum Débuter
    Réponses: 8
    Dernier message: 03/07/2015, 16h16
  2. Réponses: 6
    Dernier message: 06/06/2012, 16h31
  3. Serveur lié Sql serveur vers Mysql
    Par smain_inf dans le forum Administration
    Réponses: 9
    Dernier message: 16/07/2008, 15h22
  4. Différence entre MySql et sql serveur
    Par nina_2006 dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 30/10/2006, 16h12
  5. de Mysql à sql serveur
    Par zola dans le forum JDBC
    Réponses: 3
    Dernier message: 08/11/2004, 18h02

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