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 :

Connexion à une base de données en c#


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2011
    Messages : 273
    Par défaut Connexion à une base de données en c#
    Bonsoir,

    Sous visual studio afin de mieux comprendre le fonctionnement d'une base de données j'ai créé une Form avec une textBoxNum, une textBoxNom et une textBoxMdp et pour le code j'ai mis

    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
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.Data.SqlClient;
     
    namespace WindowsFormsApplication1
    {
        public partial class Form1 : Form
        {
            SqlConnection maConnexion = new SqlConnection("Data Source=localhost;Initial Catalog=bdtest;User Id=test;Password=test;"); 
     
            public Form1()
            {
                InitializeComponent();
            }
     
            private void button1_Click(object sender, EventArgs e)
            {
                SqlCommand maCommande = new SqlCommand();
                maCommande.Connection = maConnexion;
                maConnexion.Open(); 
                maCommande.CommandText = "INSERT INTO tbltest (fldnum, fldnom, fldmdp) VALUES ("+ textBoxNum.Text + ", '" + textBoxNom.Text + ", "+ textBoxMdp.Text +"');";
                maConnexion.Close(); 
            }
        }
    }
    Le principe est simple, on marque un truc dans les textes box, on appuie sur le bouton et ça ajoute ce qu'on a marqué dans la table créée avec phpmyadmin en local.

    Le problème c'est que ça me dit que la base de donnée est inexistante ou injoignable.

    J'ai aussi testé avec user id = localhost mais ça ne fonctionne pas (localhost n'a pas de mot de passe).

    Que dois-je faire ?

    J'ai également testé :

    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
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.Data.SqlClient;
     
    namespace WindowsFormsApplication1
    {
        public partial class Form1 : Form
        {
            SqlConnection maConnexion = new SqlConnection("Data Source=localhost,1027 ;Initial Catalog=bdtest;User Id=test;Password=test;"); 
     
            public Form1()
            {
                InitializeComponent();
            }
     
            private void button1_Click(object sender, EventArgs e)
            {
                SqlCommand maCommande = new SqlCommand();
                maCommande.Connection = maConnexion;
                maConnexion.Open();
                maCommande.CommandText = "INSERT INTO tbltest VALUES (@maValeur1, @maValeur2, @maValeur3);";
                // Puis on définit les valeurs  
                maCommande.Parameters.Add(new SqlParameter("@maValeur1", textBoxNum.Text));
                maCommande.Parameters.Add(new SqlParameter("@maValeur2", textBoxNom.Text));
                maCommande.Parameters.Add(new SqlParameter("@maValeur2", textBoxMdp.Text));  
                maConnexion.Close(); 
            }
        }
    }
    Mais j'ai le message :

    Une connexion a été établie avec le serveur, mais une erreur s'est ensuite produite pendant la négociation préalable à l'ouverture de session. (provider: TCP Provider, error: 0 - Une connexion existante a dû être fermée par l'hôte distant.)

    Merci de votre aide.

  2. #2
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2013
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2013
    Messages : 62
    Par défaut
    Salut,

    Déjà quelle type de base de données tu utilises ?
    Tu ne le spécifies pas dans ta connection string, tu dois au moins spécifier un provider.

    Ca pourra t'aider un peu : http://www.connectionstrings.com/

  3. #3
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2011
    Messages : 273
    Par défaut
    C'est MySQL avec WampServer.

  4. #4
    Membre chevronné

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2011
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2011
    Messages : 244
    Par défaut
    Pour une base Sql Server, il faut utiliser la librairie System.Data.SqlClient. Mais pour une base MySql, c'est une librairie différente, téléchargeable sur le site MySql : http://dev.mysql.com/downloads/connector/net/

  5. #5
    Membre chevronné

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2011
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2011
    Messages : 244
    Par défaut
    A noter, la construction d'une requête comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
               maCommande.CommandText = "INSERT INTO tbltest (fldnum, fldnom, fldmdp) VALUES ("+ textBoxNum.Text + ", '" + textBoxNom.Text + ", "+ textBoxMdp.Text +"');";
    est à proscrire pour éviter les problèmes d'injection de code. Il faut utiliser à la place des requêtes paramétrées.
    De la doc ici pour Sql Server, mais le principe est le même pour MySql.

  6. #6
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2011
    Messages : 273
    Par défaut
    Citation Envoyé par plume13 Voir le message
    Pour une base Sql Server, il faut utiliser la librairie System.Data.SqlClient. Mais pour une base MySql, c'est une librairie différente, téléchargeable sur le site MySql : http://dev.mysql.com/downloads/connector/net/

    Ah ok ça m'étonne pas que j'y suis pas arrivé.

    Le soucis c'est que j'ai téléchargé et installé ce driver ... mais comment m'en servir ?

  7. #7
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2013
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2013
    Messages : 62
    Par défaut
    Essaye avec ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    server = "localhost";
            database = "databasename";
            uid = "username";
            password = "password";
            string connectionString;
            connectionString = "SERVER=" + server + ";" + "DATABASE=" + 
    		database + ";" + "UID=" + uid + ";" + "PASSWORD=" + password + ";";
     
            connection = new MySqlConnection(connectionString);

  8. #8
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2011
    Messages : 273
    Par défaut
    Citation Envoyé par MoThA Voir le message
    Essaye avec ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    server = "localhost";
            database = "databasename";
            uid = "username";
            password = "password";
            string connectionString;
            connectionString = "SERVER=" + server + ";" + "DATABASE=" + 
    		database + ";" + "UID=" + uid + ";" + "PASSWORD=" + password + ";";
     
            connection = new MySqlConnection(connectionString);
    J'ai déjà essayé ... ça ne marche pas.

    J'ai installé le driver et dans la chaine de connexion j'ai mis le Driver={MySQL ODBC 5.1 Driver}; et j'ai ajouté les 2 références qui correspondent à mon framework mais ça me dit que le mot clef driver n'existe pas ...

  9. #9
    Membre chevronné

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2011
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2011
    Messages : 244
    Par défaut
    Tu peux le mettre dans ton fichier de config :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
      <connectionStrings>
        <add name="MyConnection" connectionString="Server=localhost;Uid=login;Pwd=mot_de_passe;Database=nom_database;" providerName="MySql.Data.MySqlClient"/>
      </connectionStrings>
    Puis pour récupérer la chaine de connexion :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string connectionString = ConfigurationManager.ConnectionStrings["MyConnection"].ConnectionString;

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

Discussions similaires

  1. Pool de connexion à une base de données en java
    Par ppaul127 dans le forum JDBC
    Réponses: 3
    Dernier message: 15/12/2005, 17h03
  2. Réponses: 1
    Dernier message: 25/09/2005, 16h18
  3. ERREUR DE CONNEXION à une base de donnée ACCESS protégée
    Par unionriton dans le forum Bases de données
    Réponses: 4
    Dernier message: 09/05/2005, 09h35
  4. Delphi Connexion à une base de donnée distante par TCP/IP
    Par viecel dans le forum Bases de données
    Réponses: 1
    Dernier message: 12/01/2005, 19h19
  5. Réponses: 3
    Dernier message: 29/03/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