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

Fermé
oussamacab Messages postés 1 Date d'inscription vendredi 15 novembre 2013 Statut Membre Dernière intervention 15 novembre 2013 - 15 nov. 2013 à 16:09
Kalissi Messages postés 218 Date d'inscription jeudi 2 mai 2013 Statut Membre Dernière intervention 15 juillet 2019 - 22 nov. 2013 à 17:08
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

cs_torki2 Messages postés 7 Date d'inscription mercredi 26 novembre 2008 Statut Membre Dernière intervention 20 novembre 2013 1
20 nov. 2013 à 19:00
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
Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
21 nov. 2013 à 13:48
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
Kalissi Messages postés 218 Date d'inscription jeudi 2 mai 2013 Statut Membre Dernière intervention 15 juillet 2019 20
Modifié par Kalissi le 22/11/2013 à 17:08
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
Kalissi Messages postés 218 Date d'inscription jeudi 2 mai 2013 Statut Membre Dernière intervention 15 juillet 2019 20
18 nov. 2013 à 17:47
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