none
VB.Net sqldatareader erreur : « la propriété Connection n'a pas été initialisée » RRS feed

  • Question

  • A U   S E C O U R S   ! ! !

    J'utilise Visual Basic de puis plusieurs années. J'essai présentement (pour une première fois) de me connecter à une base de données SQL sur SQL Server 2008 R2. La conception de la table a très bien fonctionner. Je résussi avec Vb à me connecter avec succès à la table . C'est après cela que le cauchemar commence. Voir mon code de façon simplifiée :

    Option Explicit On
    Option Strict On

    Imports System
    Imports System.Data
    Imports System.Data.SqlClient
    Imports System.IO


    Public Class FrmPrincipale

        Public cnx As SqlConnection
        Public cnxOuvert As Boolean
        Public cnxstr As String
        Public Lecteur As SqlDataReader

        Private Sub Form1_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing

            cnxstr = "Data Source=localhost;Initial Catalog=Recette;User Id=sa;Password=********;"
            Dim cnx As New SqlConnection(cnxstr)
            cnx.Open()
            If Not CBool(cnx.State) Then
                Stop
            End If
            cnxOuvert = CBool(cnx.State)

            MessageBox.Show("État de la connection : " + CStr(cnxOuvert), "Connection", MessageBoxButtons.OK, MessageBoxIcon.Information)
            Dim Requette As String = "SELECT TOP 1 FROM Recette;"
            Dim Commande As New SqlCommand(Requette, RecetteBD.cnx)
            Dim Lecteur As SqlDataReader = Commande.ExecuteReader()

        End Sub

    End Class

    C'est à la ligne « Dim Lecteur As SqlDataReader = Commande.ExecuteReader() » que je reçois le message d'erreur suivant : « la propriété Connection n'a pas été initialisée ».

    jeudi 25 juillet 2013 22:55

Réponses

  • Voila un modèle de connexion à moi qui fonctionne :

     Connlocal.ConnectionString = "Data Source=|DataDirectory|\dobtripsup.sdf"             cmdperma = NewSqlCeCommand("SELECT * FROM Cliendobtrip")             Connlocal.Open()             cmdperma.Connection = Connlocal             Adaptperma.SelectCommand = cmdperma             Adaptperma.Fill(datset, "matable")

    Connlocal est déclaré public, ainsi que cdmperma, Adaptperma et datset

    Jacky

    • Proposé comme réponse jacallier vendredi 26 juillet 2013 11:44
    • Marqué comme réponse Aurel Bera lundi 5 août 2013 06:41
    vendredi 26 juillet 2013 11:43

Toutes les réponses

  • bonsoir , 
    et si tu insère le mot clé New !!?

     Dim Lecteur As new SqlDataReader

    ça marche ou pas !?
    vendredi 26 juillet 2013 00:28
  • Effectivement, vous assignez la variable RecetteBD.cnx à votre SqlCommand via son constructeur. Or dans votre méthode, c'est via la variable cnx que votre connexion est instanciée et ouverte.

    Essayer plutôt :

    Dim Commande As New SqlCommand(Requette, cnx)

    Je me permets de vous faire remarquer que vous ne prévoyez pas de méchanisme pour clôturer votre connexion. Or c'est nécessaire. Et vous devriez placer vos instructions relatives à la base de données dans un bloc Try/Catch pour éviter les crashs de votre application en cas de soucis avec votre base de données (indisponibilité ou erreur lors de l'exécution de la requête).

    Enfin, des variables déclarées au niveau de la classe porte le même nom que des variables déclarées localement (cnx ou Lecteur par exemple). Vous devrez être particulièrement attentif pour ne pas les mélanger. (Peut-être que vous code déclare tout simplement trop de variable)

    vendredi 26 juillet 2013 06:21
  • Bonjour,

    Il me semble que la définition de la chaine passe la string, essaie 

    cnxstr.ConnectionString =  "Data Source=localhost;Initial Catalog=Recette;User Id=sa;Password=********;"

    Cordialement

    vendredi 26 juillet 2013 08:19
  • Bonjour,

    Il me semble que la définition de la chaine passe la string, essaie 

    cnxstr.ConnectionString =  "Data Source=localhost;Initial Catalog=Recette;User Id=sa;Password=********;"

    Cordialement


    cnxstr est de type String ne possède donc pas de propriété ConnectionString (la class sqlConnection, bien)
    vendredi 26 juillet 2013 08:39
  • bonsoir , 
    et si tu insère le mot clé New !!?

     Dim Lecteur As new SqlDataReader

    ça marche ou pas !?

    La classe SqlDataReader n'expose pas de constructeur public. Un object de ce type est obtenu via l'utilisation par exemple de la méthode ExecuteReader d'un objet SqlCommand.
    vendredi 26 juillet 2013 08:43
  • Voila un modèle de connexion à moi qui fonctionne :

     Connlocal.ConnectionString = "Data Source=|DataDirectory|\dobtripsup.sdf"             cmdperma = NewSqlCeCommand("SELECT * FROM Cliendobtrip")             Connlocal.Open()             cmdperma.Connection = Connlocal             Adaptperma.SelectCommand = cmdperma             Adaptperma.Fill(datset, "matable")

    Connlocal est déclaré public, ainsi que cdmperma, Adaptperma et datset

    Jacky

    • Proposé comme réponse jacallier vendredi 26 juillet 2013 11:44
    • Marqué comme réponse Aurel Bera lundi 5 août 2013 06:41
    vendredi 26 juillet 2013 11:43
  • Bonjour,

    Il serait sympa de mettre un retour.

    jacky

    • Proposé comme réponse jacallier lundi 5 août 2013 08:20
    lundi 5 août 2013 08:20