Requete Select et Odbc

Signaler
Messages postés
103
Date d'inscription
mardi 9 novembre 2004
Statut
Membre
Dernière intervention
10 septembre 2007
-
Messages postés
103
Date d'inscription
mardi 9 novembre 2004
Statut
Membre
Dernière intervention
10 septembre 2007
-
Bonsoir,



Pour me connecter à ma base de données Access, j'utilise ODBC afin
d'ouvrir ma base en mode exclusif. La connexion fonctionne mais j'ai un
problème pour récupérer les données. J'utilise le code suivant :



public DataTable Requete_Select_Param(OdbcCommand requete)

{

OdbcConnection Cnx = new OdbcConnection();

DataTable Dtable = new DataTable();

OdbcDataAdapter Da = new OdbcDataAdapter();



try

{


Cnx.ConnectionString=@"Driver={Microsoft Access
Driver (*.mdb)};Dbq=D:\base.mdb;Exclusive=1;";

requete.Connection = Cnx;

Cnx.Open();



Da = new OdbcDataAdapter(requete);

Da.Fill(Dtable);

}

catch(OdbcException Ex)

{

MessageBox.Show(Ex.Message);

}

return Dtable;

}



La compilation fonctionne, mais quand je lance mon application, une erreur est levée sur la ligne Da.Fill(Dtable); et l'erreur est : Trop peur de paramètres 2 attendus.



Pourtant, d'après le site MSDN, il est possible d'utiliser cette méthode Fill pour remplir ma DataTable. (=/library/FRE/cpref/html/frlrfsystemdatacommondbdataadapterclassfilltopic.asp http://msdn.microsoft.com/library/fre/default.asp?url=/library/FRE/cpref/html/frlrfsystemdatacommondbdataadapterclassfilltopic.asp)



Quelqu'un a une idée ?



Merci d'avance,

2 réponses

Messages postés
22
Date d'inscription
mercredi 23 novembre 2005
Statut
Membre
Dernière intervention
22 février 2006

C'est bizarre moi j'ai essayé ton code comme ça :

OdbcConnection Cnx = new OdbcConnection();
DataTable Dtable = new DataTable();
OdbcDataAdapter Da = new OdbcDataAdapter();
OdbcCommand requete = new OdbcCommand();

requete.CommandText = "SELECT * FROM t_joueur";

try
{
Cnx.ConnectionString=@"Driver={Microsoft Access Driver (*.mdb)};Dbq=D:\Mes documents\Visual Studio Projects\base.mdb;Exclusive=1;";
requete.Connection = Cnx;
Cnx.Open();

Da = new OdbcDataAdapter(requete);
Da.Fill(Dtable);
}
catch(OdbcException Ex)
{
MessageBox.Show(Ex.Message);
}

Et ça fonctionne, ma Dtable est bien remplie.

Es-tu sur d'avoir défini le commandtext de ton objet OdbcCommand lorsque tu appelles ta fonction public DataTable Requete_Select_Param(OdbcCommand requete) ?

Ou si tu l'as défini, je pense qu'il y a une erreur dans ta requête mais je ne suis pas sur.
Messages postés
103
Date d'inscription
mardi 9 novembre 2004
Statut
Membre
Dernière intervention
10 septembre 2007
3
Hello,

En effet, cela fonctionne avec une requête basique mais j'utiliser les OdbcParameters :

Je procède ainsi:

Dans la classe de mon formulaire :



OdbcDataAdapter Da = new OdbcDataAdapter();

OdbcCommand myCommand = new OdbcCommand("SELECT Statut FROM UTILISATEUR WHERE login=@login AND password=@password;");



OdbcParameter login = new OdbcParameter("@login",OdbcType.VarChar);

login.Value = Tlogin.Text.Trim();



OdbcParameter password = new OdbcParameter("@password",OdbcType.VarChar);

password.Value = Tpwd.Text.Trim();//on lui affecte une valeur



myCommand.Parameters.Add(login);

myCommand.Parameters.Add(password);



Da.SelectCommand = myCommand;

Dt = MaClass.Requete_Select_Param2(Da);





Et dans ma dll de traitement je fais ceci :



public DataTable Requete_Select_Param2(OdbcDataAdapter Da)

{

OdbcConnection Cnx = new OdbcConnection();

DataTable Dtable = new DataTable();

try

{

Cnx.ConnectionString=@"Driver={Microsoft Access Driver (*.mdb)};Dbq=D:\Sicav vide.mdb;Exclusive=1;";

Da.SelectCommand.CommandType = CommandType.TableDirect;

Da.SelectCommand.Connection = Cnx;

Cnx.Open();
Da.Fill(Dtable);
}
catch(OdbcException Ex)
{
MessageBox.Show(Ex.Message);
}
return Dtable;
}



Et j'obtiens toujours le même message d'erreur :/