cs_sawass
Messages postés19Date d'inscriptionjeudi 5 mai 2011StatutMembreDernière intervention11 juin 2011
-
9 juin 2011 à 04:27
cs_sawass
Messages postés19Date d'inscriptionjeudi 5 mai 2011StatutMembreDernière intervention11 juin 2011
-
9 juin 2011 à 16:03
Bonjour,
je suis planter dans le mème problème..j'ai une erreur quand je veux modifier un utilisateur dans la base de donnés.Une erreur dans cette ligne:
cmd1.ExecuteNonQuery();
l"exception est longue est à peut prét la suivante:
System.Data.Odbc.OdbcException (0x80131937): ERROR [07002] [Microsoft][Pilote ODBC Microsoft Access]Champ COUNT incorrect.
Voici mon code:
private void bt_valider_Click(object sender, System.EventArgs e)
{
OdbcConnection cn = new OdbcConnection("DSN=cp3");
try
{
cn.Open();
}
catch
{
MessageBox.Show("Failed to connect to data source");
}
finally
{
OdbcCommand comm;
comm = new OdbcCommand("select * from utilisateur where login=?", cn);
objParameter = comm.Parameters.AddWithValue("login", old_login.Text);
// comm = new OdbcCommand("select * from utilisateur where login='@L'I", cn);
// comm.Parameters.Add("@LI", old_login.Text);
OdbcDataReader rs;
try
{
rs = comm.ExecuteReader();
if (rs.Read())
{
if (rs.GetString(1) == old_pass.Text)
{
rs.Close();
OdbcParameter objParameter2 = new OdbcParameter();
OdbcCommand cmd1 = new OdbcCommand("update utilisateur set login=?,mot_de_passe=?,niveau=?, where login=?", cn);
objParameter2= cmd1.Parameters.AddWithValue("login", new_login.Text);
objParameter2 = cmd1.Parameters.AddWithValue("mot_de_passe", new_pass.Text);
if (new_type.SelectedItem.ToString() == "")
objParameter2 = cmd1.Parameters.AddWithValue("type", "u");
if (new_type.SelectedItem.ToString() == "Administrateur")
objParameter2 = cmd1.Parameters.AddWithValue("type", "a");
if (new_type.SelectedItem.ToString() == "utilisateur")
objParameter2 = cmd1.Parameters.AddWithValue("type", "u");
objParameter2 = cmd1.Parameters.AddWithValue("", old_login.Text);
cmd1.ExecuteNonQuery();
MessageBox.Show(this, "Invalid login or password ", "", MessageBoxButtons.OK, MessageBoxIcon.Information);
old_login.Text = "";
old_pass.Text = "";
new_login.Text = "";
new_pass.Text = "";
}
else
MessageBox.Show(this, "Invalid login or 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);
old_login.Text = eo.ToString();
}
}
cn.Close();
}
cs_jopop
Messages postés1540Date d'inscriptionlundi 26 mai 2003StatutMembreDernière intervention 1 août 201312 9 juin 2011 à 14:14
L'exception complète STP
Et quand on regarde de plus près on voit que tu fais des trucs bizarres avec tes paramètres.
Pourquoi assigner une variable objParameter2 à chaque fois ?
Pourquoi ton dernier paramètre n'est pas nommé ?
cs_sawass
Messages postés19Date d'inscriptionjeudi 5 mai 2011StatutMembreDernière intervention11 juin 2011 9 juin 2011 à 14:24
Voila une autre version et j'ai la mème erreur:
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=? where login=?", cn);
// DataSet Set = new DataSet();
cmd1.Parameters.Add("login", login_new.Text);
cmd1.Parameters.Add("mot_de_passe", pass_new.Text);
// if (type_new.SelectedItem.ToString().CompareTo("utilisateur"))
// cmd1.Parameters.Add("type", "u");
//String s =(type_new.GetSelected()).ToString();
// if (s.CompareTo("Administrateur")==1)
// cmd1.Parameters.Add("type", "a");
// else
// cmd1.Parameters.Add("type", "u");
L'excepton est la suivante;
System.Data.Odbc.OdbcException (0x80131937): ERROR [07002] [Microsoft][Pilote ODBC Microsoft Access]Champ COUNT incorrect
Et merci pour votre aide.
cs_jopop
Messages postés1540Date d'inscriptionlundi 26 mai 2003StatutMembreDernière intervention 1 août 201312 9 juin 2011 à 14:57
Je vois pas de champ COUNT dans ta requête ...
Toutefois il est normal que cette nouvelle version ne marche pas plus : ta requête attend 3 paramètres et tu lui en donnes que 2 (il manque le deuxième login pour la clause where).
Essaie, toujours avec cette deuxième version, de mettre ces paramètres :
Je sais pas s'il va aimé d'avoir 2 paramètres du même nom, mais il me semble qu'avec Access cela fonctionne comac (et c'est d'ailleurs pour ça qu'il faut ajouter les param dans l'ordre). A tenter quoi.
A noter également que je n'ai pas l'habitude de faire mes requêtes paramétrées ainsi. Travaillant avec Oracle ou MySQL on a des paramètres strictement nommés (genre : "SELECT * FROM T1 WHERE C1 = @c1")