Exception

Signaler
Messages postés
19
Date d'inscription
jeudi 5 mai 2011
Statut
Membre
Dernière intervention
11 juin 2011
-
Messages postés
19
Date d'inscription
jeudi 5 mai 2011
Statut
Membre
Dernière intervention
11 juin 2011
-
Lorsque j'exécute ce code j'ai l'exeption suivante:
"System.NullReferenceException: Object reference not set to an instance of an object"
Voici le code:
private void bt_valider_Click(object sender, System.EventArgs e)
{
OdbcConnection cn = new OdbcConnection("DSN=cp22");
int rs1;
try
{
cn.Open();
}
catch
{
MessageBox.Show("Failed to connect to data source");
}
finally
{
OdbcCommand comm;

comm = new OdbcCommand("select * from utilisateur where login=?", cn);
comm.Parameters.Add("login", login.Text);
OdbcDataReader rs;
try
{
rs = comm.ExecuteReader();
if (rs.Read())
{
if (rs.GetString(1) == pass.Text)
{
rs.Close();
OdbcCommand cmd1 = new OdbcCommand("update utilisateur set login=?,mot_de_passe=?,niveau=? where login=?", cn);
// cmd1.Parameters.Add("login", login_new.Text);
cmd1.Parameters.Add( "mot_de_passe", pass_new.Text);
if (type_new.SelectedItem.ToString() == "")
cmd1.Parameters.Add("type", "u");
if (type_new.SelectedItem.ToString() == "Administrateur")
cmd1.Parameters.Add("type", "a");
if (type_new.SelectedItem.ToString() == "utilisateur")
cmd1.Parameters.Add("type", "u");
cmd1.Parameters.Add("", login.Text);
rs1 = cmd1.ExecuteNonQuery();
MessageBox.Show(this, "User modified", "", MessageBoxButtons.OK, MessageBoxIcon.Information);
login.Text = "";
pass.Text = "";
login_new.Text = "";
pass_new.Text = "";

}
else
MessageBox.Show(this, "Invalid old password ", "", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
else
MessageBox.Show(this, "User does not exist", "", MessageBoxButtons.OK, MessageBoxIcon.Information);

}
catch (Exception eo)
{
// MessageBox.Show(this, "Error System", "", MessageBoxButtons.OK, MessageBoxIcon.Error);
login.Text = eo.ToString();

}

}
cn.Close();
}




Est ce quelqu'un peut m'aider s'il vous plait à corriger cette faute et merci d'avance.

5 réponses

Messages postés
1540
Date d'inscription
lundi 26 mai 2003
Statut
Membre
Dernière intervention
1 août 2013
11
Salut,

la plupart des lignes peuvent lever cette exception.

L'erreur est explicite : tu essaies d'accéder à une méthode/membre d'un objet non instancié (null). A toi de trouver sur quelle ligne cela intervient (grâce au mode debug "pas à pas" par exemple).

Si tu trouves la ligne qui fait planter mais que tu ne comprends pas le pourquoi du comment, reviens ici pour nous la donner et on t'aidera à comprendre ;)
Messages postés
19
Date d'inscription
jeudi 5 mai 2011
Statut
Membre
Dernière intervention
11 juin 2011

Merci pou votre réponse.Ma faute est dans la ligne suivante:
comm.Parameters.Add("login", login.Text);
Est vous pouvez s'il vous plait m'aider pour corriger cette faute et merci d'avance
Messages postés
19
Date d'inscription
jeudi 5 mai 2011
Statut
Membre
Dernière intervention
11 juin 2011

L'exeption est dans cette ligne:
rs = comm.ExecuteReader();
Est ce que vous pouvez m"aider s'il vous plait.
Messages postés
1540
Date d'inscription
lundi 26 mai 2003
Statut
Membre
Dernière intervention
1 août 2013
11
Re,

alors elle est où l'erreur, sur l'ajout du paramètre ou sur l'exécution de la requête ? ^^

Et je t'avouerai que j'ai du mal à appréhender ton code. Déjà, ouvrir la connexion dans un try{} pour exécuter une commande dans un finally{} c'est plutôt étrange. En effet si ta connexion n'arrive pas à s'ouvrir tu vas quand même tenter d'y exécuter ta requête ...
Messages postés
19
Date d'inscription
jeudi 5 mai 2011
Statut
Membre
Dernière intervention
11 juin 2011

La connexion à la base de données est etablie car je ne peux accèder à mon application qu'après modification de mot de passe et login du tableau utilisateur.la fonction edit fait aussi la vérification car qu'on je met un mot de passe ou un login faux il me dit.Vraiment moi aussi je ne trouve pas ou est ma faute.