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

MS SQL Server Discussion :

comment vérifier l’existence d'une valeur dans une bd sql server


Sujet :

MS SQL Server

  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2009
    Messages
    173
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 173
    Par défaut comment vérifier l’existence d'une valeur dans une bd sql server
    bonjour à tous,
    je commence d'apprendre à développer en c#,
    j'utilise le sql server.
    j'ai une table User contenant login, pass word
    j'ai une interface pour la saisie de param de connexion.
    je veut vérifier lors de saisie de ces deux param, en cliquant sur le bouton "valider", l'existence dans la bd
    voici mon code de 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
    private void valider_Click(object sender, EventArgs e)
            {
     
                try
                {
                    LocalDataSet dataSet = new LocalDataSet();
                    UserTableAdapter adapter = new UserTableAdapter();
                    SqlCommand cmd = new SqlCommand();
                    cmd.CommandText = "select login from adapter where login=log and password=motpasse";
     
                    IDataReader reader = cmd.ExecuteReader();
     
     
                   if (reader.GetName(0)=null)
                    {
    MessageBox.Show("Login et mot de passe invalide, SVP saisir de nouveau", "erreur de saisie", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                    else
                    {
    Interface_Menu myForm3 = new Interface_Menu();
                        myForm3.Show();
                    }
                }
                catch (Exception ex)
                {
                }            
            }
    le problème et que je n'arrive pas à vérifier l'existence du login et mot passe taper par la méthode de reader de l'objet idatareader,
    je veut avoir une méthode plus claire qui me permet de manipuler plus vite et plus simple les données (comme par exemple l'existence d'une valeur dans la bd)
    merci d'avance pour toute aide.

  2. #2
    Membre Expert

    Homme Profil pro
    Chargé de Développement et d'Analyse de données
    Inscrit en
    Mars 2010
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé de Développement et d'Analyse de données
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 278
    Par défaut
    on ne voit pas dans le code que tu montres la connexion à la base de données.
    il manque donc quelque chose du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    // instanciation et connexion à la base de donnée
     
    SqlConnection cnx = new SqlConnection(@"Data Source=ZINZINDOHOUE\SQL2008R2;User Id=mylogin;Password=myPWD;Initial Catalog=MaBase"); 
    cnx.Open();
    Etienne ZINZINDOHOUE
    Billets-Articles

  3. #3
    Membre confirmé
    Inscrit en
    Octobre 2009
    Messages
    173
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 173
    Par défaut
    j'utilise dataset et dataadapter, donc la cx se fait automatiquement.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 7
    Par défaut
    Je pense qu'il vaut mieux que tu utilises ExecuteScalar au lieu de ExecuteReader.

    Ca va te retourner une seule valeur dont tu pourras vérifier la nullité.

  5. #5
    Membre confirmé
    Inscrit en
    Octobre 2009
    Messages
    173
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 173
    Par défaut
    merci pour l'aide
    j'ai utilisée executescalar(), mais le problème et qu'il me demande de se connecter à la bd, tandis que j'ai bien préciser les paramétres de cx
    qui sont :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Data Source=ALIS\SQLEXPRESS;Initial Catalog=MN_Recouvrement;Integrated Security=True
    il m'indique l'erreur suivant : ExecuteScalar: Connection property has not been initialized.
    à cause de la ligne suivante : Data Source=ALIS\SQLEXPRESS
    (unrecognized escape sequence.)
    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
    public partial class Interface_Accueil : Form
        {
     
            DataSet ds = new DataSet();
            SqlConnection cx=new SqlConnection("Data Source=EMNA\SQLEXPRESS;Initial Catalog=MN_Recouvrement;Integrated Security=True");
            SqlDataAdapter da= new SqlDataAdapter();
     
            private DataGrid gridInfo = new DataGrid();// charger le résultat dans une grille dans un formulaire
            public Interface_Accueil()
            {
                InitializeComponent();
            }
     
            private void InterfaceAccueil_Load(object sender, EventArgs e)
            {
     
            }
     
     
     
            private void valider_Click(object sender, EventArgs e)
            {
                    //LocalDataSet dataSet = new LocalDataSet();
                    UserTableAdapter adapter = new UserTableAdapter();
                    DataTable TUser = adapter.GetData();
                    SqlCommand cmd = new SqlCommand("select * from TUser where Login=log and PassWord=motpasse");
                    Int32 result = (Int32)cmd.ExecuteScalar();
                    if (result == 0)
                    {
                        d1.DataSource = TUser;
                        MessageBox.Show("Login et mot de passe invalide, SVP saisir de nouveau", "erreur de saisie", MessageBoxButtons.OK, MessageBoxIcon.Error);
     
                    }
                else
                    {
                        Interface_Menu myForm3 = new Interface_Menu();
                        myForm3.Show();
                    }  
     
              //d1.DataSource = GetUser();
     
            }
    je n'arrive pas à corriger le problème puisque je suis débutante dans cette matière, merci pour toute aide

  6. #6
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Bonjour,

    Faites simple : créez une procédure stockée !

    Supposons que vous avez la table suivante :

    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
    CREATE TABLE dbo.TUser
    (
    	TUser_id smallint identity NOT NULL CONSTRAINT PK_TUser PRIMARY KEY
    	, Login varchar(128) NOT NULL CONSTRAINT UQ_TUser__Login UNIQUE
    	, PassWord varchar(128) NOT NULL
    )
    GO
     
    INSERT	INTO dbo.TUser
    (
    	Login
    	, PassWord
    )
    VALUES
    (
    	'oumay'
    	, '123abc'
    )
    GO
    La procédure stockée est :
    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
    CREATE PROCEDURE usp_check_login
    	@_user_name varchar(128)
    	, @_password varchar(128)
    	, @__ok bit OUTPUT
    AS
    BEGIN
    	SET NOCOUNT ON
     
    	IF EXISTS
    	(
    		SELECT	*
    		FROM	dbo.TUser
    		WHERE	Login = @_user_name
    		AND	PassWord = @_password
    	)
    	BEGIN
    		SET @__ok = 1
    	END
    END
    Et voici une approximation du code C# à utiliser (je suis profane aussi )

    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
    SqlCommand cmd = new SqlCommand("usp_check_login", cx);
    cmd.CommandType = CommandType.StoredProcedure;
     
    SqlParameter login = new SqlParameter("@_user_name",SqlDbType.VarChar);
    login.Size=128; 
    login.Value = log;
    login.Direction = ParameterDirection.Input ; 
    cmd.Parameters.Add(login);
     
    SqlParameter password = new SqlParameter("@_password",SqlDbType.VarChar);
    password.Size=128; 
    password.Value = PassWord;
    password.Direction = ParameterDirection.Input ; 
    cmd.Parameters.Add(password); 
     
    SqlParameter login_ok = new SqlParameter("@__ok",SqlDbType.Bit); 
    login_ok.Direction = ParameterDirection.Output;
    login_ok.Value = false;
    cmd.Parameters.Add(login_ok); 
     
    cx.Open(); 
    cmd.ExecuteNonQuery();
    cx.Close();
    @++

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/04/2015, 11h17
  2. Réponses: 1
    Dernier message: 15/07/2014, 17h57
  3. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48
  4. Réponses: 1
    Dernier message: 25/09/2006, 17h15
  5. Mettre une valeur d'une table dans une variable
    Par Raphou96 dans le forum Access
    Réponses: 5
    Dernier message: 06/02/2006, 15h19

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