Requete sql avec parametre

ced0013 Messages postés 9 Date d'inscription jeudi 10 juin 2004 Statut Membre Dernière intervention 26 juillet 2004 - 23 juin 2004 à 12:24
ced0013 Messages postés 9 Date d'inscription jeudi 10 juin 2004 Statut Membre Dernière intervention 26 juillet 2004 - 29 juin 2004 à 15:59
Voila mon problème : impossible de faire marcher une requete sql avec des parametres !!
j'ai une requete du genre :

String cmdStr = "Select Nom from MaTable Where date >?"

mon code :
cmd = new System.Data.OleDb.OleDbCommand();
cmd.Connection = mycon;
cmd.CommandText= cmdStr;
cmd.CommandType = CommandType.Text;

cmd.Parameters.Add("@datdermaj", OleDbType.Date);
cmd.Parameters["@datdermaj"].Value = System.DateTime.Now;

adap = new System.Data.OleDb.OleDbDataAdapter(cmd);
adap.Fill(dataset1);

j'obtiens toujours le meme message : "le reference d'objet n'est pas definie a une instance d'objet" !!!! (de quel objet ??? je sais pas !!)

j'ai vu qu'on peut ajouter les parametres soit au OleDbCommand, soit au OleDbDataAdapter, j'ai essayé les 2 et j'ai toujours le meme message !!
Si j'execute sans mettre le Where dans la requete, ca marche bien, donc je pense que ca ne peut venir que des parametres,

je suis pas un pro du c# alors si qqn peut m'aider, ce serait sympa,
merci

ced0013

4 réponses

Trinita16 Messages postés 199 Date d'inscription lundi 22 juillet 2002 Statut Membre Dernière intervention 14 juin 2006
24 juin 2004 à 11:51
slt,

essai ça

using System.Data.SqlClient;

string StringConnect = "Server=(local);database=formation;uid=sa;pwd=sa";

SqlConnection MyConnect = new SqlConnection( StringConnect );

SqlDataAdapter Myda = new SqlDataAdapter ( "test", MyConnect );

Myda.SelectCommand.CommandType = CommandType.StoredProcedure;

Myda.SelectCommand.Parameters.Add ( new SqlParameter ("@Name", SqlDbType.VarChar, 50));
Myda.SelectCommand.Parameters["@Name"].Value = "tutu";

il fonction via sqlclient mais tu peux le faire fonctionner avec oldedb ....

8-) :-p

Trinita,
0
ced0013 Messages postés 9 Date d'inscription jeudi 10 juin 2004 Statut Membre Dernière intervention 26 juillet 2004
24 juin 2004 à 13:58
salut, j'ai essayé en faisant adap.SelectCommand.Parameters.Add(new OleDbParameter("@datdermaj",OleDbType.DBTimeStamp)), mais j'ai toujours le meme message "le reference d'objet n'est pas definie a une instance d'objet",

mais je crois que c'est du au fait que c'est un champs Date, car si je fais la meme chose sur un champs String, ca marche bien !!
tu as déja utilisé un parametre pour un champs date ?
merci a toi,

ced0013
0
ced0013 Messages postés 9 Date d'inscription jeudi 10 juin 2004 Statut Membre Dernière intervention 26 juillet 2004
24 juin 2004 à 14:59
en fait, je crois pas que ca vient des dates, car j'ai une autre requete (Insert) avec des parametres (string), et j'ai encore ce message !!! donc je dois faire une grosse connerie, mais je vois pas ou !!!

string Strcmd = "INSERT INTO elem(libelle,ref) VALUES(?,?)";
cmd = new OleDbCommand(Strcmd,ConnecWS);
adap = new OleDbDataAdapter(cmd);
adap.InsertCommand.Parameters.Add(new OleDbParameter("@libelle",OleDbType.VarChar));
adap.InsertCommand.Parameters["@libelle"].Value =lig[0];

adap.InsertCommand.Parameters.Add(new OleDbParameter("@ref",OleDbType.VarChar));
adap.InsertCommand.Parameters["@ref"].Value = lig[1];

// pour executer, je suis pas sur de mon coup!!
adap.InsertCommand.ExecuteScalar()

Si y'a des pros du sql en c# , please HELP ME, je vais peter les plombs avec ca !!

ced0013
0
ced0013 Messages postés 9 Date d'inscription jeudi 10 juin 2004 Statut Membre Dernière intervention 26 juillet 2004
29 juin 2004 à 15:59
en fait c'est un bug du driver ole db pour visual foxpro,
je pouvais chercher longtemps un probleme dans mon code !!
merci bill !! ou plutot kill bill

ced0013
0