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 :

Accés au base des données avec C#


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Inscrit en
    Mars 2009
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 8
    Par défaut Accés au base des données avec C#
    Bonjour tous le monde, je cherche de l'aide concernant un probleme d'accés a la base des données SQL server déja crée:
    mon probleme c'est que je n'arrive pas à me connecter a la base des données avec C# sous VS 2008.
    dans le fichier form1.cs il y a
    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
    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.Configuration;
    using System.Data.SqlServerCe;
    using System.Data.Odbc;
    using System.Data.SqlClient;
    using System.Data.Services;
     
    namespace gestion_materiel
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
     
            private void button1_Click(object sender, EventArgs e)
            {
                string id = textBox1.Text.Trim();
                string lib = textBox2.Text.Trim();
                string connectionString = "gestion_materiel.Properties.Settings.gest_materielConnectionString";
                string requete = "INSERT INTO division VALUES(id,lib)";
     
                SqlCeConnection connexion = new SqlCeConnection(connectionString);
     
                connexion.Open();
                SqlCeCommand sqlCommand = new SqlCeCommand(requete, connexion);
     
     
            }
        }
    }
    et dans le fichier programs.cs

    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
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Windows.Forms;
     
    namespace gestion_materiel
    {
        static class Program
        {
            /// <summary>
            /// The main entry point for the application.
            /// </summary>
            [STAThread]
            static void Main()
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(new Form1());
            }
        }
    }
    et dans le fichier App.config

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
        <configSections>
        </configSections>
        <connectionStrings>
            <add name="gestion_materiel.Properties.Settings.gest_materielConnectionString"
                connectionString="Data Source=localhost\SQLEXPRESS;Initial Catalog=gest_materiel;Integrated Security=True"
                providerName="System.Data.SqlClient" />
        </connectionStrings>
    </configuration>
    si quelqu'un peut me dire oû est le probleme

    merci d'avance.

  2. #2
    Membre du Club
    Inscrit en
    Mars 2009
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 8
    Par défaut
    Bonjour ;
    lors de l'execution de mon programme l'utilitaire me donne une exception figurée dans l'image suivante.



    merci de me repondre
    Images attachées Images attachées  

  3. #3
    Membre émérite Avatar de ctxnop
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2007
    Messages : 858
    Par défaut
    Salut !
    A première vue ta ConnectionString me semble complètement fausse. Tu as donné le nom d'une ressource et non la ressource.

  4. #4
    Membre du Club
    Inscrit en
    Mars 2009
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 8
    Par défaut
    oui merci pour votre réponse:
    en fait j'ai utilisé la source ça donne la meme erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string connectionString = "Data Source=localhost\\SQLEXPRESS;Initial Catalog=gest_materiel;Integrated Security=True";
    si vous avez une autre solution à me donner parce que je suis encore debutant dans le C#. et c'est juste une application pour rendre comme sujet de mon stage.

    merci d'avance

  5. #5
    Membre du Club
    Inscrit en
    Mars 2009
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 8
    Par défaut
    merci à tous j'ai resolu le probleme moi méme
    en fait dans le fichier form1.cs il faut mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SqlCommand sqlCommand = new SqlCommand(requete, connexion);
    a la place de sqlCeCommand

    et comme ça c'est résolu je peus ecrire sur ma base de données

  6. #6
    Membre émérite Avatar de ctxnop
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2007
    Messages : 858
    Par défaut
    Ah oui, j'y avait pas fait attention, mais effectivement, c'est SqlCommand et non SqlCeCommand.

    Par contre, ton code est pas vraiment bon. Il manques quelques petites choses.
    Normalement on fait comme ca :
    Code csharp : 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
     
    private void button1_Click(object sender, EventArgs e)
    {
    	string id = textBox1.Text.Trim();
    	string lib = textBox2.Text.Trim();
    	string connectionString = "Data Source=localhost\\SQLEXPRESS;Initial Catalog=gest_materiel;Integrated Security=True";
    	string requete = "INSERT INTO division VALUES(@id, @lib)";
     
    	using(SqlConnection connexion = new SqlConnection(connectionString))
    	{
    		connexion.Open();
    		using(SqlCommand cmd = new SqlCommand(requete, connexion))
    		{
    			cmd.Parameters.Add(new SqlParameter("@id", id));
    			cmd.Parameters.Add(new SqlParameter("@lib", lib));
    			cmd.ExecuteNonQuery();
    		}
    	}
    }

    Les deux grosses modifications sont :
    - L'utilisation des clauses "using". Par exemple, l'objet connexion n'existe que dans le block qui le déclare. De plus, en fin du block, la méhode ".Dispose()" sera appelée sur l'objet. On utilise "using" typiquement dans le cas où tu es : l'exécution de script SQL. Mais pas seulement.

    - L'utilisation des paramètres SQL. Si jamais l'utilisateur entre le texte : ' ', ''); DROP DATABASE gest_materiel; --, la base de données sera supprimée. Ca s'appelle l'injection SQL. Sachant que DROP DATABASE peut être remplacé par n'importe quelle requête.
    J'ai pris un cas un peu extrême, mais même si l'utilisateur ne compte pas faire de l'injection SQL, ca reste un problème. Par exemple une apostrophe dans un champs texte et ta requête échouera. Donc on utilise les paramètres SQL pour passer des valeurs, celles-ci sont donc protégées contre ce genre de problème.

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

Discussions similaires

  1. Deploiment de SQL SERVER et la base des données avec oneClick setup
    Par sdoula dans le forum Windows Presentation Foundation
    Réponses: 5
    Dernier message: 24/04/2010, 10h26
  2. [phpMyAdmin] pb d'accès à la base de donnée avec root sous phpMyAdmin
    Par jeinny dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 4
    Dernier message: 22/05/2009, 16h21
  3. Récupérer ma base de donnée avec des tables en .frm uniqueme
    Par Michas dans le forum Administration
    Réponses: 5
    Dernier message: 31/08/2005, 13h57

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