omarF
Messages postés82Date d'inscriptiondimanche 25 janvier 2009StatutMembreDernière intervention24 novembre 2012
-
9 mars 2009 à 11:01
omarF
Messages postés82Date d'inscriptiondimanche 25 janvier 2009StatutMembreDernière intervention24 novembre 2012
-
10 mars 2009 à 18:56
//jarrive pas a trouver ma faute il me lance une exception OleDb parameter est utilisé dans une autre OleDbParameter
//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 par1 = new OleDbParameter("inventaire",inv);
OleDbParameter par2 = new OleDbParameter("titre",tit);
OleDbParameter par3 = new OleDbParameter("auteur",aut);
OleDbParameter par4 = new OleDbParameter("date edition",date);
//Appel au méthode Ajout Ouvrage
DataAccess.AjoutOuvrage(cnn,par1,par2,par3,par4);
Console.ReadLine();break;
case 0 :break;
default : Console.WriteLine("choix incorrect!! Le choix varie entre 0 et 2");break;
}
}
while(choix!=0);
cnn.Close();
leprov
Messages postés1160Date d'inscriptionvendredi 23 juillet 2004StatutMembreDernière intervention21 octobre 201017 10 mars 2009 à 15:05
Le message d'erreur est pourtant clair (du moins il me semble, sans avoir le code ni connaitre ce que tu fais). Tu utilises la variable "par1" dans deux commandes différentes. Le message d'erreur te dis que tu peux pas
leprov
Messages postés1160Date d'inscriptionvendredi 23 juillet 2004StatutMembreDernière intervention21 octobre 201017 9 mars 2009 à 11:23
Au hasard et sans savoir de quoi je parle, juste en lisant lerreur que tu dis et ton code, ca se produit a la ligne : rd.Parameters.Add(par1); ?
si cest bien le cas, tu fais qqs lignes avant cmd.Parameters.Add(par1);
Suffit de lire le message qui dit qu'un parameter ne peut etre utilisé que dans une seule commande...
omarF
Messages postés82Date d'inscriptiondimanche 25 janvier 2009StatutMembreDernière intervention24 novembre 2012 10 mars 2009 à 18:56
donc il ya pas une solution a ce prb que si jélimine le test du clé primaire Iventaire de ma table Ouvrage pour que sa fonctionne... !! jai voulue faire un test pour que mon systeme ne ne bloque pas si je saisie un inventaire déja existant dans ma base de donnée Access