ExecuteNonQuery : la propriété Connection n'a pas été initialisé

oussamacab Messages postés 1 Statut Membre -  
Kalissi Messages postés 221 Statut Membre -
j'ai un petit ex a faire sous ASP.NET
j'ai crée 2 champs de saisie
id: textbox1
id:textbox2
un bouton pour faire l'ajout à la base
et un label pour le message de résultat
je fais la saisie de deux champs et en cliquant sur le bouton un message d'erreur dans le label : ExecuteNonQuery : la propriété Connection n'a pas été initialisé
j'attends vos aides et merci d'avance
Imports System.Data.OleDb

Imports System.Data
Imports System.Data.Common.DbCommand
Imports System.Data.SqlClient

Partial Class _Default
Inherits System.Web.UI.Page
Dim Connection As New System.Data.OleDb.OleDbConnection

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
Try
Connection.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\bm\Documents\Visual Studio 2008\WebSites\tryy\dbase\try.mdb"
Dim req As SqlCommand = New SqlCommand("insert into req (name,age) values('" & TextBox1.Text & "', '" & TextBox2.Text & "')")

Connection.Open()
req.ExecuteNonQuery()
Connection.Close()
Label1.Text = "data saved"
TextBox1.Text = ""
TextBox2.Text = ""

Catch ex As Exception
Connection.Close()
Label1.Text = ex.Message
End Try
End Sub
End Class

2 réponses

  1. cs_torki2 Messages postés 8 Statut Membre 1
     
    Je crois que tu dois déclarer ta requête comme ceci :
    dim req as new oledbCommand("insert into req (name,age) values('" & TextBox1.Text & "', '" & TextBox2.Text & "')",connection)

    Aussi je pense que le nom de ta bdd "try.mdb" n'est bien choisi

    --
    1
    1. Reivax962 Messages postés 3742 Statut Membre 1 011
       
      Je confirme.
      Tel que tu as écris ton code, rien ne relie ta variable req à ta variable Connection.

      Tu dois pouvoir garder ton code et rajouter juste un truc du genre req.Connection = Connection...
      0
    2. Kalissi Messages postés 221 Statut Membre 20
       
      re:

      Oui, j'oublie souvent que les codeurs accèdent directement à la BD à partir d'un formulaire.

      Pour ma part, dans mon travail, je n'ai pas le droit d'accéder à une BD à partir d'un formulaire,
      je dois passer par une classe UAD (Unité d'Accès aux Données ) du genre :


      Private Shadows zConnexion As New OleDb.OleDbConnection()

      Private Property Connexion() As OleDb.OleDbConnection
      Get
      Try
      If (Me.zConnexion Is Nothing) Then
      zConnexion = New OleDb.OleDbConnection()
      End If
      Catch ex As Exception

      End Try

      Return Me.zConnexion

      End Get
      Set(ByVal value As OleDb.OleDbConnection)
      Me.zConnexion = value
      End Set
      End Property

      Public Sub New(ByVal pContexte As Type_Contexte)
      MyBase.new()
      Contexte = pContexte

      Try
      ' Parametrage de la chaine de connection
      Connexion.ConnectionString = "Provider=Microsoft.Jet.OleDB.4.0;" & "Data Source= " & Contexte.CheminBD & ";"
      Connexion.Open()
      Catch exZ As ZcException
      StrTexte.AppendLine(ZcExceptionMsg.MSG500001)
      StrTexte.AppendLine("Chemin de la BD : " & Chemin)
      StrTexte.AppendLine("Constructeur VIDEO_SQL")
      MessageBox.Show(StrTexte.ToString)
      End Try

      End Sub

      Public Function Obtenir_Liste_Videos(ByVal Critere As Type_Criteres) As Type_Collection

      Tracage.LigneTracage("Entree - VIDEO_SQL : Obtenir_Liste_Videos", Contexte)

      Dim MonAdapteur As OleDb.OleDbDataAdapter = Nothing
      Dim MonDataTable As DataTable = Nothing
      Dim MonDataSet As New DataSet()
      Dim DataRowLocal As DataRow
      Dim MaCollection As New Type_Collection
      Dim MonEntite As New Type_Entite
      Dim ErrFat As ZcException = Nothing

      Try
      Dim reqSQL As String = Video_REQ.ObtenirSQL_Liste_Video(Critere)

      MonAdapteur = New OleDbDataAdapter(reqSQL, Connexion)
      MonAdapteur.Fill(MonDataSet, "TableVideo")
      MonDataTable = MonDataSet.Tables("TableVideo")

      For Each DataRowLocal In MonDataTable.Rows
      MonEntite = CreerInstance(DataRowLocal, Contexte)
      MaCollection.Add(MonEntite)
      Next

      Tracage.LigneTracage("Sortie - VIDEO_SQL : Obtenir_Liste_Videos", Contexte)

      Catch ex As Exception
      Tracage.LigneTracage("Erreur - VIDEO_SQL : Obtenir_Liste_Videos", Contexte)
      Tracage.Chemin = Contexte.CheminLog
      Tracage.Programme = "WinVidéo"
      Tracage.Methodes = "Obtenir_Liste_Videos"
      ErrFat = New ZcException(ex, Tracage.Methodes)
      ErrFat.LeverException()
      MaCollection = Nothing
      Finally
      Connexion.Close()
      End Try

      Return MaCollection

      K
      0
  2. Kalissi Messages postés 221 Statut Membre 20
     
    Bonjour,

    Est-tu sur du chemin de ta BD ?

    Imports System.Data.SqlClient
    
    Partial Class ConnexionBD
        Inherits System.Web.UI.Page
    
        Dim Connection As New System.Data.OleDb.OleDbConnection
        Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
    
            Dim Var1 As String = String.Empty
            Dim Var2 As String = String.Empty
            Dim Var3 As String = String.Empty
    
            Dim CheminBD As String = "C:\Users\bm\Documents\Visual Studio 2008\WebSites\tryy\dbase\try.mdb"
    
    '...............tryy
    
            Try
                Connection.ConnectionString = _
                    "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & CheminBD
    
                Dim req As SqlCommand = New SqlCommand("insert into req (name,age) values('" & Var2 & "', '" & Var3 & "')")
    
                Connection.Open()
                req.ExecuteNonQuery()
    
                Var1 = "data saved"
                Var2 = String.Empty
                Var3 = String.Empty
    
            Catch ex As Exception
                Var1 = ex.Message
    
            Finally
                Connection.Close()
            End Try
        End Sub
    
    End Class
    
    


    K
    0