PB requete

Résolu
gabs77 Messages postés 379 Date d'inscription mardi 6 décembre 2005 Statut Membre Dernière intervention 8 octobre 2008 - 17 janv. 2008 à 10:18
gabs77 Messages postés 379 Date d'inscription mardi 6 décembre 2005 Statut Membre Dernière intervention 8 octobre 2008 - 17 janv. 2008 à 15:04
Bonjour,
j'ai un problème avec l'execution d'une requete en C# l'adresse de la bdd est bonne et la requete est bonne aussi .
Le souci est que l'exécution s'arrête au executeScalar et va directement renvoyer une exception qui est la suivante :
            L'erreur suivante a été rencontrée : Échec de IErrorInfo.GetDescription avec E_FAIL(0x80004005).
J'ai même essayer avec un OleDbDataReader et il lève l'exception a  lors du ExecuteReader();

Help Please !

Voici mon code :

try




{










string
strRequete "SELECT My_Feild1 FROM Table1 WHERE My_Field2 'tableTest ;"
; //retourne une seule case de résultat


OleDbConnection
oConnection =

new



OleDbConnection
(strConnexion);


OleDbCommand
oCommand =

new



OleDbCommand
(strRequete, oConnection);


oConnection.Open();







string
 returnVal = (

string
)oCommand.ExecuteScalar();



MessageBox

.Show(

"Le résulata est : "
+ returnVal);






oConnection.Close();oCommand.Dispose();

oConnection.Dispose();

}

catch (
OleDbException ex)

{

MessageBox.Show(
"L'erreur suivante a été rencontrée : " + ex.Message);

}

8 réponses

SharpMao Messages postés 1024 Date d'inscription mardi 4 février 2003 Statut Membre Dernière intervention 7 juin 2010 69
17 janv. 2008 à 11:59
Essaie encore de mettre tes nom de champs et de table entre[], certains sont peut-être des noms réservés par la DB.
string strRequete "SELECT [libelle] FROM [Section] WHERE [couleur] @Color";

Amicalement, SharpMao

"C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!"
(Coluche / 1944-1986 / Pensées et anecdotes)
2
SharpMao Messages postés 1024 Date d'inscription mardi 4 février 2003 Statut Membre Dernière intervention 7 juin 2010 69
17 janv. 2008 à 10:33
Hello,

Ton problème vient du fait que tu n'as pas refermé ton ' :stringstrRequete "SELECT My_Feild1 FROM Table1 WHERE My_Field2 'tableTest ' ;"

Cette erreur n'aurait pas eu lieu si tu utilisait des requêtes paramétrées.

Dans ton cas, ça donne :
string strRequete "SELECT My_Feild1 FROM Table1 WHERE My_Field2 @Field2";
//retourne une seule case de résultat
OleDbConnection oConnection = newOleDbConnection(strConnexion);
OleDbCommand oCommand = newOleDbCommand(strRequete, oConnection);
OleDbParameter oParam= oCommand.Parameters.Add("@Field2", OleDbType.VarChar);
oParam.Value = "tableTest";

//Suite du code

Amicalement, SharpMao

"C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!"
(Coluche / 1944-1986 / Pensées et anecdotes)
0
gabs77 Messages postés 379 Date d'inscription mardi 6 décembre 2005 Statut Membre Dernière intervention 8 octobre 2008
17 janv. 2008 à 10:56
je viens de tester en requetes paramétré et le résultat est le même
0
SharpMao Messages postés 1024 Date d'inscription mardi 4 février 2003 Statut Membre Dernière intervention 7 juin 2010 69
17 janv. 2008 à 11:19
Deux petites questions :
- Est-ce que la requête fonctionne directement dans la base de données ?
- Es-tu sûr de ne pas avoir mal écrit les noms de tes champs, My_Feild1 avec 'e' suivi de i, et My_Field1 avec 'i' suivi de 'e' ??

Amicalement, SharpMao

"C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!"
(Coluche / 1944-1986 / Pensées et anecdotes)
0

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

Posez votre question
gabs77 Messages postés 379 Date d'inscription mardi 6 décembre 2005 Statut Membre Dernière intervention 8 octobre 2008
17 janv. 2008 à 11:50
oui la requete marche directement j'ai mm changer les noms des champs pour m'en assurer ce qui donne ceci
string strRequete "SELECT libelle FROM Section WHERE couleur @Color";
//retourne une seule case de résultat
OleDbConnection oConnection = newOleDbConnection(strConnexion);
OleDbCommand oCommand = newOleDbCommand(strRequete, oConnection);
OleDbParameter oParam= oCommand.Parameters.Add("@Color", OleDbType.VarChar);
oParam.Value = "Rouge";
0
gabs77 Messages postés 379 Date d'inscription mardi 6 décembre 2005 Statut Membre Dernière intervention 8 octobre 2008
17 janv. 2008 à 12:15
Je ne connaissais pas cette méthode, j'en prends note par la suite
En effet, ça marche mieux ainsi.

Merci SharpMao
0
SharpMao Messages postés 1024 Date d'inscription mardi 4 février 2003 Statut Membre Dernière intervention 7 juin 2010 69
17 janv. 2008 à 12:49
De rien ,

N'oublie pas de cocher la bonne réponse, ça peut aider d'autres personnes.

Amicalement, SharpMao

"C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!"
(Coluche / 1944-1986 / Pensées et anecdotes)
0
gabs77 Messages postés 379 Date d'inscription mardi 6 décembre 2005 Statut Membre Dernière intervention 8 octobre 2008
17 janv. 2008 à 15:04
En revanche un autre truc Sharpmao,
je fais une requete SQL pour access avec des champs numériques ais je veuxlui fixé des limites de caractères au champ numériques comme les varchar est ce que tu sais comment faire ?
CREATE TABLE LIVRE (nom_livre VARCHAR(255), ANNEE ????(4))
0
Rejoignez-nous