PB requete [Résolu]

Messages postés
380
Date d'inscription
mardi 6 décembre 2005
Dernière intervention
8 octobre 2008
- - Dernière réponse : gabs77
Messages postés
380
Date d'inscription
mardi 6 décembre 2005
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);

}
Afficher la suite 

Votre réponse

8 réponses

Meilleure réponse
Messages postés
1025
Date d'inscription
mardi 4 février 2003
Dernière intervention
7 juin 2010
66
2
Merci
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)

Dire « Merci » 2

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 114 internautes nous ont dit merci ce mois-ci

Commenter la réponse de SharpMao
Messages postés
1025
Date d'inscription
mardi 4 février 2003
Dernière intervention
7 juin 2010
66
0
Merci
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)
Commenter la réponse de SharpMao
Messages postés
380
Date d'inscription
mardi 6 décembre 2005
Dernière intervention
8 octobre 2008
0
Merci
je viens de tester en requetes paramétré et le résultat est le même
Commenter la réponse de gabs77
Messages postés
1025
Date d'inscription
mardi 4 février 2003
Dernière intervention
7 juin 2010
66
0
Merci
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)
Commenter la réponse de SharpMao
Messages postés
380
Date d'inscription
mardi 6 décembre 2005
Dernière intervention
8 octobre 2008
0
Merci
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";
Commenter la réponse de gabs77
Messages postés
380
Date d'inscription
mardi 6 décembre 2005
Dernière intervention
8 octobre 2008
0
Merci
Je ne connaissais pas cette méthode, j'en prends note par la suite
En effet, ça marche mieux ainsi.

Merci SharpMao
Commenter la réponse de gabs77
Messages postés
1025
Date d'inscription
mardi 4 février 2003
Dernière intervention
7 juin 2010
66
0
Merci
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)
Commenter la réponse de SharpMao
Messages postés
380
Date d'inscription
mardi 6 décembre 2005
Dernière intervention
8 octobre 2008
0
Merci
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))
Commenter la réponse de gabs77

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.