Menu

La référence d'objet n'est pas définie à une instance d'un objet [Résolu]

dalydooo 54 Messages postés dimanche 19 avril 2015Date d'inscription 11 septembre 2017 Dernière intervention - 4 sept. 2017 à 13:09 - Dernière réponse : Whismeril 11561 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 27 mai 2018 Dernière intervention
- 4 sept. 2017 à 16:12
Bonjour,
Est ce que vous pouvez m'aider sur cette erreur ..
tous les condition se fonctionne sauf
quand je met le mdp incorrect il m'affiche cette erreur
https://img-19.ccm2.net/Hzy_cBOw0g98ecB6T6itnU-S9HQ=/a1770ca188e54ac5a1dc697f5ed8ce37/ccm-ugc/Sans_titre.png

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Configuration;


namespace WebApplication5
{
    public partial class login : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected void Bu_Log_Click(object sender, EventArgs e)
        {
            SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["DaliConnectionString"].ConnectionString);
            conn.Open();
            string checkuser = "select count(*) from Authentification where Email ='" + txtemail2.Text + "'";
            SqlCommand com = new SqlCommand(checkuser, conn);
            int temp = Convert.ToInt32(com.ExecuteScalar().ToString());
            conn.Close();
            if (temp == 1)
            {
                conn.Open();
                string checkPasswordQuery = "Select Password from Authentification where Email ='" + txtemail2.Text + "'";
                SqlCommand passComm = new SqlCommand(checkPasswordQuery, conn);
                string Password = passComm.ExecuteScalar().ToString();
                conn.Close();

                //---------------------------------------
                conn.Open();
                string checkStatutQuery = "Select StatutID from Authentification where Email ='" + txtemail2.Text + "' and Password ='" + txtmdp2.Text + "'";
                SqlCommand StatutComm = new SqlCommand(checkStatutQuery, conn);
                string StatutID = StatutComm.ExecuteScalar().ToString();
                conn.Close();


                if  (StatutID=="1")
                {
                    Session["New"] = txtemail2.Text;
                    Response.Redirect("index.html");
                    
                }
                else if (StatutID == "3")
                {
                    lb2.Text = "Vous etes en attente";

                }
                else if (StatutID == "2")
                {
                    lb2.Text = "Votre compte est inactif";

                }
                
                else
                    {
                    lb2.Text = "Password is not correct" ;

                     }
            }
            else
            {
                    lb2.Text = "Email is not correct";
            }
           
              
          

        }
        
    }
}


merci d'avance

EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.
Afficher la suite 

Votre réponse

3 réponses

Whismeril 11561 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 27 mai 2018 Dernière intervention - 4 sept. 2017 à 13:58
0
Merci
Bonjour

Le message d'erreur veut dire qu'un objet de la ligne n'est pas initialisé.
En gros, y a pas eu
Toto machin = new Toto();


A priori StatutComm devrait être ok (au vu de la ligne de dessus) donc, ce serait la méthode executeScalar qui retourne null (ça peut être cohérent d'une requête invalide due au mauvais mot de passe).

Pour en être sûr, quand ça boggue, mets un espion sur StatutComm, s'il n'est pas null, mets un espion sur StatutComm.ExecuteScalar(). Si c'est bien ce second qui est null, alors il faut faire un test avant de demander le ToString()
string StatutID = "y a une erreur";
if (StatutComm.ExecuteScalar() != null)
    StatutID = StatutComm.ExecuteScalar().ToString();



Tu peux aussi utiliser l'opérateur conditionnel null
dalydooo 54 Messages postés dimanche 19 avril 2015Date d'inscription 11 septembre 2017 Dernière intervention - 4 sept. 2017 à 14:30
merciiiii
Commenter la réponse de Whismeril
Whismeril 11561 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 27 mai 2018 Dernière intervention - 4 sept. 2017 à 16:12
0
Merci
De rien, pense à mettre le sujet résolu si cela te convient.
Il y a un lien dédié sous le titre de la discussion
Commenter la réponse de Whismeril