0
votes

Charger des données dans DataGridView à partir de SQL Server dans VB

Chargement des données de SQL Server dans DataGridView mais AVERTISSEMENT 1 Variable 'DTAPPLICTLISTLISTLISTLISTLISTLISTLISTES' AVANT D'AVOIR UNE VALEUR. Une exception de référence NULL pourrait entraîner une exécution. Strong> Soulignon vert sur dtappplicantlists.load (Reader)

Toute aide, s'il vous plaît ... p>

 Private Function GetList() As DataTable

        Dim dtApplicantLists As DataTable

        Dim connString As String = ConfigurationManager.ConnectionStrings("dbx").ConnectionString

        Using conn As New SqlConnection(connString)

            Using cmmd As New SqlCommand("SELECT FirstName, LastName, Gender, ChosenProg, Aggregate FROM dbo.Applicants", conn)

                conn.Open()

                Dim reader As SqlDataReader = cmmd.ExecuteReader()

                dtApplicantLists.Load(reader)

            End Using

        End Using

        Return dtApplicantLists

    End Function


11 commentaires

Où dans ce code crée-tu un objet dataTable ? Vous ne le faites pas, d'où la question. Vous savez évidemment comment créer des objets car vous le faites pour la connexion et la commande. Vous devez faire la même chose pour la table.


Vous devez appeler SET DTAPPlicantsList = Nouveau DataTable - Actuellement, c'est NULL (ou rien dans VB). Disclaimer: Je n'utilise pas VB pour que ma syntaxe puisse être un peu éteinte.


@CHARLLEH, le mot clé n'est pas requis et, si je ne me trompe pas, pas même pris en charge dans VB.NET. En outre, vous n'utiliserez généralement pas ce formulaire à long terme. Changer Date DtaplicantListes comme DataTable TO DM DTAPPLICTLISTLISTLISTLISSONS NEW DATABLE est l'option évidente.


OT, vous n'avez pas besoin de nier en utilisant des blocs à moins que vous n'ayez besoin d'interlacer le code entre eux .. Vous pouvez initialiser plusieurs variables avec un seul à l'aide de la déclaration . Il suffit de les séparer avec des virgules.


DAY DTAPPLICANTLISTLISTLISTLISTLISTÉS NOUVEAU DATABLE .. et. Disposez () Le lecteur après chargement de la table ou utilisez un à l'aide de pour le créer .


@jmcilhinney Ouais - ça fait un moment, je ne peux pas regarder VB sans grimace, ce n'est pas une langue terrese, c'est sûr!


@JQsoft, tandis que c'est la meilleure pratique, la fermeture de la connexion fermera implicitement le lecteur.


@Charleh ça a fonctionné à 100% merci soooooo beaucoup


@jmcilhinney faisons le patron de la meilleure pratique.


@jmcilhinney a du sens que la fermeture de la connexion fermera le lecteur, mais qu'en est-il de Reader.Dispose? Est-ce que ça va aussi .Disposez-vous au lecteur? J'ai essayé de vérifier la source de référence mais cela était rapidement sur ma tête. Testé avec nothing mais il ne retourna pas vrai.


@Mary, j'appellerais Fermer sur Dispose mais, comme @jqsoft suggéré, je crée toujours le lecteur avec un à l'aide de implicitement disposé. Vous devriez toujours toujours créer un objet jetable avec un à l'aide de la relève si vous finissez à l'aide de cet objet dans la même méthode.


3 Réponses :


0
votes

Vous devez appeler dtaplicantlists = nouveau DataTable - Actuellement, c'est NULL (ou rien dans VB).


0 commentaires

0
votes

en utilisant la méthode code> garantira que vous n'aurez pas besoin de vous inquiéter des avertissements comme celui-ci que vous avez obtenu, comme étant évidemment démontré dans votre code.

Private Function GetList() As DataTable
        Dim SqlStr As String =
            ("SELECT FirstName, LastName, Gender, ChosenProg, Aggregate FROM dbo.Applicants")
        Using dtApplicantLists As DataTable = New DataTable
            Using conn As New SqlConnection(ConfigurationManager.ConnectionStrings("dbx").ConnectionString),
                    Cmd As New SqlCommand(SqlStr, conn)
                conn.Open()
                Using Reader As SqlDataReader = Cmd.ExecuteReader
                    dtApplicantLists.Load(Reader)
                End Using
            End Using
            Return dtApplicantLists
        End Using
    End Function


0 commentaires

0
votes

Vous pouvez le faire de cette façon. XXX

Voir le lien ci-dessous pour d'autres options similaires, mais légèrement différentes.

http://vb.net-informations.com/dataadapter/dataAdapter-DataGridView-sqlserver.htm


0 commentaires