ExecuteNonQuery*: la propriété Connection n'a pas été initialisée.
Bonjour, j'appel à votre aide car j'ai un bug dont je ne vois pas pourquoi .
J'utilise VB2010, access 2010
J'ai une classe AccessConnexion (qui me permet de me connecter à ma base Access)
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
Public Class AccessConnexion
'attribut chemin de la base
Private chemin As String = My.Application.Info.DirectoryPath & "\base.accdb"
'Attribut connexion unique à une source de données
Private cnx As OleDb.OleDbConnection = Nothing
'Attribut chaine de connection (fournisseur d'accès aux données + chemin)
Private cnxstr As String = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" & chemin & ";"
Public Sub Open_connexion()
Try
'test si la connexion n'est pas déjà ouverte
'If cnx.State <> 1 Then
cnx = New OleDb.OleDbConnection
cnx.ConnectionString = cnxstr
cnx.Open()
'End If
Catch ex As Exception
Throw New Exception("Erreur d'ouverture connexion" & Environment.NewLine & ex.Message)
End Try
End Sub
end class |
et une classe AccesUsers (qui permet enfin je voudrais bien qui ajoute un utilisateur à la base)
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
'ajout référence vers BEL
Imports BEL
Public Class AccessUsers : Inherits AccessConnexion
'Enregistrement de l'utilisateur dans la base
Public Sub Ajouter(ByVal NewUser As USER)
Dim ac As New AccessConnexion
Dim cmd As New OleDb.OleDbCommand
ac.Open_connexion()
cmd.CommandType = CommandType.Text
cmd.CommandText = "INSERT INTO USERS (LOGIN, MDP, QUESTION, REPONSE) VALUES ('" & NewUser.Login & "','" & NewUser.Password & "','" & NewUser.Question & "','" & NewUser.Reponse & "')"
'ExecuteNonQuery*: la propriété Connection n'a pas été initialisée.
cmd.ExecuteNonQuery()
End Sub
End Class |
C'est dans cette classe que l'erreur se produit au moment de cmd.ExecuteNonQuery.
erreur syntaxe instruction INSERT INTO
j'ai modifié mon code en fonction de ton aide mais maintenant j'ai une autre erreur dans l'écriture de ma requete SQL mais je l'ai testé déjà testé dans un autre programme VB.net mais à l'époque tous était dans une même classe.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
'ajout référence vers BEL
Imports BEL
Public Class AccessUsers : Inherits AccessConnexion
'Enregistrement de l'utilisateur dans la base
Public Sub Ajouter(ByVal NewUser As USER)
Dim commande As OleDb.OleDbCommand
Dim ac As New AccessConnexion
ac.Open_connexion()
Dim sql As String = "INSERT INTO USER (LOGIN, PASSWORD, QUESTION, REPONSE) VALUES ('" & NewUser.Login & "','" & NewUser.Password & "','" & NewUser.Question & "','" & NewUser.Reponse & "')"
commande = ac.get_cnx.CreateCommand()
commande.CommandText = sql
commande.ExecuteNonQuery()
End Sub
End Class |
Sur la ligne de commande.ExecuteNonQuery() un message s'affiche en me précisant que
Citation:
Erreur de syntaxe dans l'instruction INSERT INTO
Toujours erreur de syntaxe
Merci du tuyau pour le mot clé j'ai changé le nom dans ma base et dans mon code (évidement) mais une autre erreur persiste.
Il me marque toujours "l'exception OleDBexception n'as pas été géré" && "erreur de syntaxe dans l'instruction INSERT INTO".
Pourtant en réalisant un pas à pas détaille dans le informations de commandtext j'ai bien ma requête avec les éléments saisie dans les différents textbox.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
'ajout référence vers BEL
Imports BEL
Public Class AccessUsers : Inherits AccessConnexion
'Enregistrement de l'utilisateur dans la base
Public Sub Ajouter(ByVal NewUser As USER)
'Try
Dim commande As OleDb.OleDbCommand
Dim ac As New AccessConnexion
ac.Init_connexion()
ac.Open_connexion()
Dim sql As String = "INSERT INTO UTILISATEUR (Login, Password, Question, Reponse) VALUES ('" & NewUser.Login & "','" & NewUser.Password & "','" & NewUser.Question & "','" & NewUser.Reponse & "')"
commande = ac.get_cnx.CreateCommand()
commande.CommandText = sql
commande.ExecuteNonQuery()
'Catch ex As Exception
'Throw New Exception("Erreur ajout utilisateur" & Environment.NewLine & ex.Message)
'End Try
End Sub
End Class |
et mon bouton Ajouter
Code:
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
|
'ajout référence vers BEL
Imports BEL
'ajout référence vers BEL
Imports BPL
Public Class Inscription
Private Sub AjouterUser(ByVal login As String, ByVal password As String, ByVal question As String, ByVal reponse As String)
Dim NewUser As USER = New USER(login, password, question, reponse)
Dim UserBPL As New BPL.BPLuser
UserBPL.BPL_Ajouter(NewUser)
End Sub
Private Sub Binscription_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Binscription.Click
'Try
AjouterUser(TBlogin.Text, TBpassword.Text, CBquestion.Text, TBlogin.Text)
'Catch ex As Exception
'MessageBox.Show(ex.Message, ".:: ERREUR", MessageBoxButtons.OK, MessageBoxIcon.Error)
'End Try
End Sub
End Class |
erreur syntaxe instruction INSERT INTO
En suivant tes conseils de requetes parametré mais j'ai toujours la même erreur de syntaxe INSERT INTO.
Code:
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
|
'ajout référence vers BEL
Imports BEL
Public Class AccessUsers : Inherits AccessConnexion
'Enregistrement de l'utilisateur dans la base
Public Sub Ajouter(ByVal NewUser As USER)
'Try
Dim cnx As OleDb.OleDbConnection = Nothing
Dim cmd As OleDb.OleDbCommand
cnx = Open_connexion()
cmd = New OleDb.OleDbCommand
cmd.CommandType = CommandType.Text
Dim sql As String = "INSERT INTO UTILISATEUR (Login, Password, Question, Reponse) VALUES (@login, @password, @question, @reponse)"
cmd.CommandText = sql
cmd.Parameters.AddWithValue("@login", NewUser.Login)
cmd.Parameters.AddWithValue("@password", NewUser.Password)
cmd.Parameters.AddWithValue("@question", NewUser.Question)
cmd.Parameters.AddWithValue("@reponse", NewUser.Reponse)
cmd.Connection = cnx
cmd.ExecuteNonQuery()
'Catch ex As Exception
'Throw New Exception("Erreur ajout utilisateur" & Environment.NewLine & ex.Message)
'End Try
End Sub
End Class |