Cast spécifié non valide [Résolu]

Messages postés
380
Date d'inscription
mardi 6 décembre 2005
Dernière intervention
8 octobre 2008
- - Dernière réponse : chakoor
Messages postés
1
Date d'inscription
jeudi 20 janvier 2011
Dernière intervention
17 mars 2011
- 17 mars 2011 à 11:30
bonjour,
je débute en C# et j'ai rencontré un problème auquel je ne parviens à comprendre quelle est-elle.
voici le code ci dessous et le message est le suivant : "le cast spécifié n'est pas valide"
 
public void ChargerListBox(string strRequete)
        {
        try
            {
                OleDbConnection oConnection = new OleDbConnection(strConnexion);
                OleDbCommand oCommand = new OleDbCommand(strRequete, oConnection);
                oConnection.Open();
                OleDbDataReader oReader = oCommand.ExecuteReader();
                do
                {
                    LB.Items.Clear();
                    //        MessageBox.Show(oReader.GetName(0));
                    while (oReader.Read())
                    {
                        LB.Items.Add(oReader.GetString(0));
                    }
                }
               while (oReader.NextResult());
                oReader.Close();
                oConnection.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show("L'erreur suivante a été rencontrée :" + ex.Message);
            }
        }
Afficher la suite 

Votre réponse

9 réponses

Meilleure réponse
Messages postés
5507
Date d'inscription
dimanche 4 août 2002
Dernière intervention
20 juin 2013
3
Merci
Salut,

Voire la documentation en ligne:
http://msdn2.microsoft.com/en-us/library/system.data.oledb.oledbdatareader.getstring.aspx

"No conversions are performed; therefore the data retrieved must already be a string.
Call IsDBNull to look for null values before calling this method."

<hr />
-My Blog-

Dire « Merci » 3

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

Codes Sources a aidé 104 internautes ce mois-ci

Commenter la réponse de cs_Bidou
Messages postés
5507
Date d'inscription
dimanche 4 août 2002
Dernière intervention
20 juin 2013
3
Merci
GetValue qui retourne un object ne pourrait-il pas faire l'affaire ?

<hr />
-My Blog-

Dire « Merci » 3

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

Codes Sources a aidé 104 internautes ce mois-ci

Commenter la réponse de cs_Bidou
Messages postés
2369
Date d'inscription
mardi 17 avril 2001
Dernière intervention
26 décembre 2007
0
Merci
D'ailleurs au passage tu ne fermes pas tes connections et ne disposent pas tes objets, en cas d'echec ou pas.
Afin de garantir cette opération instancies tes objets connections et commande de la manière sivante :

using( OleDbConnection oConnection = new OleDbConnection(strConnexion))
{
                using (OleDbCommand oCommand = new OleDbCommand(strRequete, oConnection))
               {
               }
}

::|The S@ib|::
MVP C#.NET
Commenter la réponse de TheSaib
Messages postés
380
Date d'inscription
mardi 6 décembre 2005
Dernière intervention
8 octobre 2008
0
Merci
Merci Bidou


en effet j'avais des valeurs null ce qui me posait problème, ainsi j'ai pu répondre au problème

TheSaib, je prends en notes tes remarques afin d'améliorer mon code !!
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
En revache je ne parvien spas à afficher dans des labels certains champs de ma base de données comme les champs numérique de ma base de données ACCESS pourtant il ne sont pas vide
Commenter la réponse de gabs77
Messages postés
2369
Date d'inscription
mardi 17 avril 2001
Dernière intervention
26 décembre 2007
0
Merci
Une exception ... une erreur ....

::|The S@ib|::
MVP C#.NET
Commenter la réponse de TheSaib
Messages postés
380
Date d'inscription
mardi 6 décembre 2005
Dernière intervention
8 octobre 2008
0
Merci
il me m'était une erreur de cast aussi mais j'ai compris mon erreur
 je faisai
label1.Text = oReader.GetString(0)
or il fallait faire ainsi
label1.Text = string.Format( "{0}" , oReader.GetInt16(0))

Par contre, j'ai encore une autre question :
comment est ce que l'on peut faire un switch avec un equals() ?
car je veux faire une fonction qui a comme paramètre une List<Label> et une requeteSQL
et cette fonction affichera respectivement les champs dans les labels correspondants
champ1 => label1
champ2 => label2

donc j'ai fait le script suivant :

do 
   {
   while(oReader.Read())
      {
      int i =0;
      while (oReader.FieldCount() > i)
         {
         // je veux faire quelquechose qui ressemble à cela
          switch (oReader.GetFieldType.Equals(???) )
            {
            case (string) :   Tlabel[i].Text = oReader.GetString(i);
            case (Int16) :   Tlabel[i].Text = string.Format("{0}",oReader.GetInt16(i));
            ....
            default : 
            }
         i++;
         }
      }
   }
while(oReader.NextResult());
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
Effectiement Bidou, c'est bien plus simple ainsi !! Je ne sai pourquoi je sui parti compliqué
Commenter la réponse de gabs77
Messages postés
1
Date d'inscription
jeudi 20 janvier 2011
Dernière intervention
17 mars 2011
0
Merci
bonjour,
je débute en VB.NET et j'ai rencontré un problème auquel je ne parviens à comprendre quelle est-elle.
voici le code ci dessous et le message est le suivant : "le cast spécifié n'est pas valide"
Public dread As OleDbDataReader
Private Sub remplir5()
filxegrid.Clear()
filxegrid.Rows = 1
cd.CommandText = "select * from fiche;"
cd.Connection = st
dread = cd.ExecuteReader
filxegrid.FormatString = dread.GetName(0) & " " & vbTab & dread.GetName(1) & " " & vbTab & dread.GetName(2) & " " & vbTab & dread.GetName(3) & " " & vbTab & dread.GetName(4) & " " & vbTab & dread.GetName(5) & " " & vbTab & dread.GetName(6) & " " & vbTab & dread.GetName(7) & " " & vbTab & dread.GetName(8) & " " & vbTab & dread.GetName(9) & " " & vbTab & dread.GetName(10) & " " & vbTab & dread.GetName(11) & " " & vbTab & dread.GetName(12) & " " & vbTab & dread.GetName(13) & " " & vbTab & dread.GetName(14) & " " & vbTab & dread.GetName(15) & " " & vbTab & dread.GetName(16) & " "
While dread.Read
filxegrid.AddItem(dread.GetString(0) & vbTab & dread.GetString(1) & vbTab & dread.GetString(2) & vbTab & dread.GetString(3) & vbTab & dread.GetString(4) & vbTab & dread.GetBoolean(5) & vbTab & dread.GetString(6) & vbTab & dread.GetString(7) & vbTab & dread.GetString(8) & vbTab & dread.GetString(9) & vbTab & dread.GetString(10) & vbTab & dread.GetString(11) & vbTab & dread.GetString(12) & vbTab & dread.GetString(13) & vbTab & dread.GetString(14) & vbTab & dread.GetString(15) & vbTab & dread.GetString(16))
End While
dread.Close()
End Sub
Commenter la réponse de chakoor

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.