Récupèration des données

cs_fayrous Messages postés 48 Date d'inscription lundi 23 février 2009 Statut Membre Dernière intervention 30 avril 2009 - 21 mars 2009 à 09:23
cs_Robert33 Messages postés 834 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 14 janvier 2017 - 23 mars 2009 à 14:16
Salut,
lors de l'exécution du code , les données ne se sauvegardent pas dans la base .un message d'erreur indique que il y a de doublement des clés.
voila le code
private void afficher_Click(object sender, EventArgs e)
{
string connection = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\Documents and Settings\\Administrateur\\Bureau\\BASE/bd1.mdb";
using (OleDbConnection con = new OleDbConnection(connection))
{
try
{
//ouverture de la connection
con.Open();


using (OleDbCommand com = new OleDbCommand("insert into Réponse values( @n,@q)", con))
{
for (int j = 1; j > 0; j++)
{
for (int i = 3; i > 0; i++)

{

com.Parameters.Add("@nr", OleDbType.Char).Value = "rép i,j";
com.Parameters.Add("@q", OleDbType.Char).Value = j;
com.ExecuteNonQuery();
}
}
}



MessageBox.Show("OK");

}
catch (Exception ex)
{
MessageBox.Show(String.Format("Erreur.Message:'{0}'", ex.Message));
}
finally
{
con.Close();
}
}
}
mais je ne vois de doublement en utilisant "rép i,j"
S.V.P
pouvez vous me expliquer pourquoi ?

5 réponses

cs_Robert33 Messages postés 834 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 14 janvier 2017 33
21 mars 2009 à 10:25
Bonjour,

es-tu sur du test dans tes boucles ?
                       for (int j = 1; j > 0; j++)  tant que j est positif on l'incremente ????
                        { 
                            for (int i = 3; i > 0; i++) tant que i est positif on l'incremente ????

par ailleur, dans ta requête tu utilises le parametre "@n" alors que dans ta commande tu ajoutes "@nr" cela ne doit pas fonctionner.

enfin, pour verifier l'erreur dans le "catch" affiche les valeurs de 'i' et 'j'
et vas verifier dans ta base, si les valeurs n'exitent pas dèjà.

C# is amazing, enjoy it!
0
cs_fayrous Messages postés 48 Date d'inscription lundi 23 février 2009 Statut Membre Dernière intervention 30 avril 2009
21 mars 2009 à 11:18
Salut,
oui , tu es raison il faut décrémenter.mais je ne n'arrive pas à corriger mon code
toujours il y a un erreur "aucun valeur donnée pour les paramètres "
tandis que j'ai affecté des valeurs
using (OleDbConnection con = new OleDbConnection(connection))
{
try
{
//ouverture de la connection
con.Open();


using (OleDbCommand com = new OleDbCommand("insert into Réponse values( @a,@n,@q)", con))
{
for (int j = 4; j > 0; j--)
{
com.Parameters.Add("@q", OleDbType.Char).Value = box[j].Name;
for (int i = 3; i > 0; i--)
{

com.Parameters.Add("@n", OleDbType.Char).Value = check[i].Name;

com.ExecuteNonQuery();
}
}


}
MessageBox.Show("OK");
}
catch (Exception ex)
{
MessageBox.Show(String.Format("Erreur.Message:'{0}'", ex.Message));
}
finally
{
con.Close();
}
}
S.V.P pouvez vous m'aider
0
cs_Robert33 Messages postés 834 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 14 janvier 2017 33
21 mars 2009 à 16:07
Re,

be oui, tu as ajouté un parametre ''@a" mais tu ne lui donne pas de valeur dans la commande.

Fais attention, dans tes boucles tu ajoutes les parametres ça ne va donc pas marcher la deuxieme fois, car les parametres seront dèjà dans la collection.

A+
C# is amazing, enjoy it!
0
cs_fayrous Messages postés 48 Date d'inscription lundi 23 février 2009 Statut Membre Dernière intervention 30 avril 2009
22 mars 2009 à 22:32
Bonsoir,
oui c'est juste mais le type de paramètre ''@a" est numeroauto. je crois qu'il ne faut pas donner un valeur dans la commande puisqu'il est automatique.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Robert33 Messages postés 834 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 14 janvier 2017 33
23 mars 2009 à 14:16
Bonjour,
tu as raison les numérotations automatiques sont gérées par la base, mais il ne faut pas non plus préciser ces parametres dans les commandes.

A+
C# is amazing, enjoy it!
0
Rejoignez-nous