PB requete [Résolu]

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

8 réponses

Répondre au sujet
SharpMao 1025 Messages postés mardi 4 février 2003Date d'inscription 7 juin 2010 Dernière intervention - 17 janv. 2008 à 11:59
+2
Utile
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)
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de SharpMao
SharpMao 1025 Messages postés mardi 4 février 2003Date d'inscription 7 juin 2010 Dernière intervention - 17 janv. 2008 à 10:33
0
Utile
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
gabs77 380 Messages postés mardi 6 décembre 2005Date d'inscription 8 octobre 2008 Dernière intervention - 17 janv. 2008 à 10:56
0
Utile
je viens de tester en requetes paramétré et le résultat est le même
Commenter la réponse de gabs77
SharpMao 1025 Messages postés mardi 4 février 2003Date d'inscription 7 juin 2010 Dernière intervention - 17 janv. 2008 à 11:19
0
Utile
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
gabs77 380 Messages postés mardi 6 décembre 2005Date d'inscription 8 octobre 2008 Dernière intervention - 17 janv. 2008 à 11:50
0
Utile
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
gabs77 380 Messages postés mardi 6 décembre 2005Date d'inscription 8 octobre 2008 Dernière intervention - 17 janv. 2008 à 12:15
0
Utile
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
SharpMao 1025 Messages postés mardi 4 février 2003Date d'inscription 7 juin 2010 Dernière intervention - 17 janv. 2008 à 12:49
0
Utile
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
gabs77 380 Messages postés mardi 6 décembre 2005Date d'inscription 8 octobre 2008 Dernière intervention - 17 janv. 2008 à 15:04
0
Utile
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.