PB requete [Résolu]

Signaler
Messages postés
379
Date d'inscription
mardi 6 décembre 2005
Statut
Membre
Dernière intervention
8 octobre 2008
-
Messages postés
379
Date d'inscription
mardi 6 décembre 2005
Statut
Membre
Dernière intervention
8 octobre 2008
-
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

Messages postés
1024
Date d'inscription
mardi 4 février 2003
Statut
Membre
Dernière intervention
7 juin 2010
60
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)
Messages postés
1024
Date d'inscription
mardi 4 février 2003
Statut
Membre
Dernière intervention
7 juin 2010
60
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)
Messages postés
379
Date d'inscription
mardi 6 décembre 2005
Statut
Membre
Dernière intervention
8 octobre 2008

je viens de tester en requetes paramétré et le résultat est le même
Messages postés
1024
Date d'inscription
mardi 4 février 2003
Statut
Membre
Dernière intervention
7 juin 2010
60
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)
Messages postés
379
Date d'inscription
mardi 6 décembre 2005
Statut
Membre
Dernière intervention
8 octobre 2008

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";
Messages postés
379
Date d'inscription
mardi 6 décembre 2005
Statut
Membre
Dernière intervention
8 octobre 2008

Je ne connaissais pas cette méthode, j'en prends note par la suite
En effet, ça marche mieux ainsi.

Merci SharpMao
Messages postés
1024
Date d'inscription
mardi 4 février 2003
Statut
Membre
Dernière intervention
7 juin 2010
60
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)
Messages postés
379
Date d'inscription
mardi 6 décembre 2005
Statut
Membre
Dernière intervention
8 octobre 2008

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))