gabs77
Messages postés379Date d'inscriptionmardi 6 décembre 2005StatutMembreDernière intervention 8 octobre 2008
-
17 janv. 2008 à 10:18
gabs77
Messages postés379Date d'inscriptionmardi 6 décembre 2005StatutMembreDerniè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);
SharpMao
Messages postés1024Date d'inscriptionmardi 4 février 2003StatutMembreDernière intervention 7 juin 201069 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)
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)
SharpMao
Messages postés1024Date d'inscriptionmardi 4 février 2003StatutMembreDernière intervention 7 juin 201069 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)
Vous n’avez pas trouvé la réponse que vous recherchez ?
gabs77
Messages postés379Date d'inscriptionmardi 6 décembre 2005StatutMembreDerniè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";
gabs77
Messages postés379Date d'inscriptionmardi 6 décembre 2005StatutMembreDerniè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))