IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

InvalidCastException lors d'un accès base de donnée Access


Sujet :

VB.NET

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2008
    Messages : 5
    Points : 5
    Points
    5
    Par défaut InvalidCastException lors d'un accès base de donnée Access
    Bonjour à tous,

    Voila j'ai un problème que je n'arrive pas à comprendre...

    Dans mon programme j'essaye de récupérer les informations contenues dans une base de donnée access via un OleDbDataReader et de les afficher dans une ListBox...

    Le problème est qu'il me renvoi une InvalidCastException lors de la lecture d'une ligne.

    Voila le code utilisé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    Imports System
    Imports System.Data
    Imports System.Data.OleDb
    Imports Microsoft.VisualBasic
     
    Public Class Form3
        Inherits System.Windows.Forms.Form
        Dim connexion As OleDbConnection
        Dim commande As OleDbCommand
        Dim reader As OleDbDataReader
     
        Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
            Me.Close()
        End Sub
     
        Private Sub Form3_FormClosing(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing
            Form1.Show()
        End Sub
     
        Private Sub Form3_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Try
                connexion = New OleDbConnection("Provider=Microsoft.Jet.Oledb.4.0;Data Source=C:\Film.mdb")
                commande = connexion.CreateCommand()
                commande.CommandText = "Select * From Film"
                connexion.Open()
                reader = commande.ExecuteReader()
                Do While reader.Read()
                    ListBox1.Items.Add(reader.GetString(0))
                Loop
                reader.Close()
                connexion.Close()
            Catch ex As Exception
                MsgBox(ex.ToString, MsgBoxStyle.Critical, "Erreur Form3")
                My.Computer.FileSystem.WriteAllText("Erreur.log", TimeOfDay.ToString + ":" & ControlChars.CrLf + ex.ToString & ControlChars.CrLf, True)
                Form1.Close()
            End Try
        End Sub
    End Class
    Voici l'erreur générée:

    01/01/0001 20:51:29:
    System.InvalidCastException: Le cast spécifié n'est pas valide.
    à System.Data.OleDb.ColumnBinding.ValueString()
    à System.Data.OleDb.OleDbDataReader.GetString(Int32 ordinal)
    à WindowsApplication1.Form3.Form3_Load(Object sender, EventArgs e) dans D:\Visual Basic\ListeFilm\ListeFilm\Form3.vb:ligne 30
    La ligne 30 correspond à ListBox1.Items.Add(reader.GetString(0))

    Merci d'avance pour votre aide.

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2008
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    Je crois avoir trouver une partie de la réponse...

    Avec le GetString je ne peux pas le faire mais avec un GetValue ça marche...

    La différence entre les deux est l'élément renvoyé... Le premier est un String (comme son nom l'indique) et le second renvoie un Objet... or il nous faut un Objet comme type...

    Si quelqu'un trouve une meilleur explication je suis preneur

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Ca veut dire que le champ à l'index 0 n'est pas de type String...

    De toutes façons, c'est une mauvaise idée d'utiliser "SELECT *" dans ta requête, parce qu'il n'y a aucune garantie sur l'ordre des champs... Il vaut mieux spécifier les champs que tu sélectionnes, comme ça tu es sûr de l'ordre dans lequel ils seront renvoyés.

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2008
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    Merci

    J'avais pas pensé à ça! Il est vrai que je ne spécifie pas sur quel chaine travailler... et il doit surement me renvoyer autre chose qu'un String.

    J'essaye tout à l'heure avec un champ texte pur

    Je marque le sujet comme Résolue

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème accès base de données Access
    Par Jesus_Cry dans le forum JDBC
    Réponses: 12
    Dernier message: 01/01/2014, 12h47
  2. Accès base de données Access oledb
    Par melleb dans le forum MFC
    Réponses: 6
    Dernier message: 11/05/2009, 15h22
  3. Acces Base de donnée Access dans un combobox
    Par freko dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 25/10/2007, 12h10
  4. Accès Base de données Access
    Par vincent magnin dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 28/06/2006, 12h09
  5. [Kylix] Kylix et accès Base de données
    Par Oyoboy dans le forum EDI
    Réponses: 16
    Dernier message: 22/06/2004, 16h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo