omarF
Messages postés82Date d'inscriptiondimanche 25 janvier 2009StatutMembreDernière intervention24 novembre 2012
-
9 mars 2009 à 11:19
omarF
Messages postés82Date d'inscriptiondimanche 25 janvier 2009StatutMembreDernière intervention24 novembre 2012
-
15 mars 2009 à 23:04
slt,
jarrive pas a comprendre ce message d'erreur ,que qlq maide svp
voila le message derreur : /** Exception System.ArgumentException was thrown in debuggee:
L'élément OleDbParameter est déjà contenu dans un autre OleDbParameterCollection.
Validate()
Add()
Add() **/
voila le code :
using System;
using System.Data;
using System.Data.OleDb;
using System.Collections.Generic;
using System.Text;
namespace ModeConnecteParameter
{
class DataAccess
{
public static int CalculOuvrage(OleDbConnection cnn)
{
string sql1= "select count(*) from Ouvrage";
OleDbCommand rd = new OleDbCommand(sql1,cnn);
int n=(int)rd.ExecuteScalar();
return (n);
}
public static void AjoutOuvrage(OleDbConnection cnn,OleDbParameter par1,OleDbParameter par2,OleDbParameter par3,OleDbParameter par4)
{
string sql2"select * from Ouvrage where Inventaire ?";
OleDbCommand cmd= new OleDbCommand(sql2,cnn);
cmd.Parameters.Add(par1);
OleDbDataReader rdd =cmd.ExecuteReader();
if(rdd.Read())
{Console.WriteLine(" le numero de linventaire existe déja !!!!");}
else{
string sql3="insert into Ouvrage values(?,?,?,?)";
OleDbCommand rd = new OleDbCommand(sql3,cnn);
rd.Parameters.Add(par1);
rd.Parameters.Add(par2);
rd.Parameters.Add(par3);
rd.Parameters.Add(par4);
rd.ExecuteNonQuery();
Console.WriteLine("Opération d'ajout éffectué avec succés");
}
}
public static void Main()
{
string StrCnn =@"provider=Microsoft.Jet.OLEDB.4.0;
Data Source = C:\Documents and Settings\kalia omar\Bureau\First Test.mdb";
OleDbConnection cnn = new OleDbConnection(StrCnn);
cnn.Open();
Console.WriteLine("**************Menu********************");
Console.WriteLine(" 1: Pour calculer le nbr des ouvrages ");
Console.WriteLine(" 2: Pour Ajouter un Ouvrage ");
Console.WriteLine(" 0: Pour quitter ");
Console.WriteLine("**************************************");
Console.WriteLine(" ");
int choix;
do
{
Console.WriteLine(" donnez votre choix");
choix=Int32.Parse(Console.ReadLine());
switch(choix)
{
case 1:
Console.WriteLine("le résultat est :" +DataAccess.CalculOuvrage(cnn));
break;
case 2:
//Saisir a la main de chaque columns du tableau Ouvrage
Console.WriteLine(" donner l'inventaire ");
int inv=Int32.Parse(Console.ReadLine());
Console.WriteLine(" donner le titre ");
string tit=Console.ReadLine();
Console.WriteLine(" donner l'Auteur ");
string aut=Console.ReadLine();
Console.WriteLine(" donner la date d'édition ");
int date=Int32.Parse(Console.ReadLine());
//Crée des Objets de type OleDbParameter
OleDbParameter par2 = new OleDbParameter("inventaire",inv);
OleDbParameter par3 = new OleDbParameter("titre",tit);
OleDbParameter par4 = new OleDbParameter("auteur",aut);
OleDbParameter par5 = new OleDbParameter("date edition",date);
//Appel au méthode Ajout Ouvrage
DataAccess.AjoutOuvrage(cnn,par2,par3,par4,par5);
Console.ReadLine();break;
case 0 :break;
default : Console.WriteLine("choix incorrect!! Le choix varie entre 0 et 2");break;
}
}
while(choix!=0);
cnn.Close();
cs_coq
Messages postés6350Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014101 15 mars 2009 à 00:30
Salut,
Le message est relativement clair : tu tentes d'insérer la même instance de OleDbParameter dans 2 collections de paramètres différentes : c'est le cas avec l'instance "par1" que tu associes à la fois à "cmd" et à "rd".
omarF
Messages postés82Date d'inscriptiondimanche 25 janvier 2009StatutMembreDernière intervention24 novembre 2012 15 mars 2009 à 23:04
oui j'ai compris se message , mais le prb que je peux pas faire une requete qui fait le teste pour savoir est ce que l'inventaire existe dans ma base Accees ou pas ?? C juste pour pour éviter le bloquage lorsque j'ajoute un inventaire déja existant