VB.NET connexion base mysql et projet VBNET
Résolu
angelus1821
Messages postés
217
Statut
Membre
-
angelus1821 Messages postés 217 Statut Membre -
angelus1821 Messages postés 217 Statut Membre -
Bonjour,
je souhaiterais connecter mon projet vbnet à une base mysql, seulement je n'y arrive pas, à titre de test j'ai une table dans ma base mysql "reacteur"(id, capacité, localisation) et donc j'ai essayé avec un connecteur mais je n'y arrive pas
voici mon code:
et donc je veux afficher dans une listebox (lstbox) mais je n'y arrive pas, j'ai mis ma base de données "final" au format sql, mais je ne sais pas vraiment dans quel dossier la mettre ou comment indiquer la source ?
quand j'arrive sur la page ça me dit " Le format de la chaîne d'initialisation n'est pas conforme à la spécification qui débute à l'index 32 " à la ligne :
sauriez vous me conseillez pour interagir avec ma base de données ?? un grand merci d''avance !!
je souhaiterais connecter mon projet vbnet à une base mysql, seulement je n'y arrive pas, à titre de test j'ai une table dans ma base mysql "reacteur"(id, capacité, localisation) et donc j'ai essayé avec un connecteur mais je n'y arrive pas
voici mon code:
Dim maconnexion As MySqlConnection
maconnexion = New MySqlConnection()
maconnexion.ConnectionString = "server =localhost ;user = root ;password = "";database= final"
maconnexion.Open()
Dim macommand As New MySqlCommand
Dim adaptateur As New MySqlDataAdapter
Dim matable As New DataTable
Dim requete As String
requete= " SELECT * from reacteur"
macommand.Connection = maconnexion
macommand.CommandText = requete
adaptateur.SelectCommand = macommand
adaptateur.Fill(matable)
For i As Integer = 0 To matable.Rows.Count - 1
Dim numero As String
Dim localisation As String
localisation = matable(i)("numero").ToString
numero = matable(i)("localisation ").ToString
lstbox.Items.Add(numero)
lstbox.Items.Add( lstbox.Items.Add(numero))
Next
maconnexion.Close()
et donc je veux afficher dans une listebox (lstbox) mais je n'y arrive pas, j'ai mis ma base de données "final" au format sql, mais je ne sais pas vraiment dans quel dossier la mettre ou comment indiquer la source ?
quand j'arrive sur la page ça me dit " Le format de la chaîne d'initialisation n'est pas conforme à la spécification qui débute à l'index 32 " à la ligne :
Le format de la chaîne d'initialisation n'est pas conforme à la spécification qui débute à l'index 32
sauriez vous me conseillez pour interagir avec ma base de données ?? un grand merci d''avance !!
A voir également:
- Vb.net mysql
- Mysql community download - Télécharger - Bases de données
- Connexion à MySQL depuis VB.net version 8.0.28 ✓ - Forum Framework .NET
- Could not connect to mysql! please check your database settings! - Forum Redhat
- Vb.net express - Télécharger - Langages
- Phpmyadmin a tenté de se connecter au serveur mysql, et le serveur a rejeté la connexion. merci de vérifier les valeurs de host, username et password dans la configuration et de s'assurer qu'elles correspondent aux informations fournies par l'administrateur du serveur mysql. ✓ - Forum PHP
10 réponses
Bonjour,
Déjà ta chaine de connection est faussé !
Dim Chaine As String = "server =localhost ;user = root ;password =" & """" & """" & ";database= final"
maconnexion.ConnectionString = Chaine
Cdt
Lupin
Déjà ta chaine de connection est faussé !
Dim Chaine As String = "server =localhost ;user = root ;password =" & """" & """" & ";database= final"
maconnexion.ConnectionString = Chaine
Cdt
Lupin
re:
Voici la définition :
1.) J'ai assumé que tu cherchais à obtenir la liste de la table
( reacteur ), donc j'ai accumulé les résultats dans des listbox.
2.) Ce code est modifié, car je procède toujours avec des objets
et 3 couches dans le modèle organique.
Interface
Controleur
Data
La couche Data est une couche (DLL) à 2 classes
- L'Objet de service
- Une liste d'objets de service
La couche Controleur contient aussi 2 classes
- Une classe Amie (Friends) - Les requêtes SQL
- Une classe Public - La transaction
donc l'interface n'accède jamais directement à la BD.
Cdt
Lupin
Voici la définition :
Imports MySql.Data.MySqlClient
Public Class PC_UI_TO_CDA
Public Sub ObtenirListeReacteur()
Dim ChaineConnexion As String = String.Empty
Dim ChaineSQL As String = String.Empty
Dim StrTexte As New System.Text.StringBuilder
Dim Connexion As MySqlConnection
Try
' Parametrage de la chaine de connection
ChaineConnexion = String.Format("server={0};user id={1}; password={2}; database=mysql; pooling=false", "localhost", "root", "")
Connexion = New MySqlConnection(ChaineConnexion)
Connexion.Open()
'Code
Dim MonAdapteur As MySqlDataAdapter
Dim MonDataTable As DataTable
Dim MonDataSet As New DataSet
Dim DataRowLocal As DataRow
ChaineSQL = "SELECT * FROM reacteur"
'ChaineSQL = "SELECT * FROM historique.reacteur"
MonAdapteur = New MySqlDataAdapter(ChaineSQL, Connexion)
MonAdapteur.Fill(MonDataSet, "membres")
MonDataTable = MonDataSet.Tables("membres")
For Each DataRowLocal In MonDataTable.Rows
If (DataRowLocal.Item(0) IsNot Nothing) Then
ListBox1.Items.Add(Convert.ToString(DataRowLocal.Item(0)))
End If
If (DataRowLocal.Item(1) IsNot Nothing) Then
ListBox2.Items.Add(Convert.ToString(DataRowLocal.Item(1)))
End If
If (DataRowLocal.Item(2) IsNot Nothing) Then
ListBox3.Items.Add(Convert.ToString(DataRowLocal.Item(2)))
End If
Next
Catch ex As Exception
StrTexte.AppendLine("Erreur de connexion !")
StrTexte.AppendLine("Modele")
StrTexte.AppendLine("Constructeur : PC_config_ExeSQL")
StrTexte.AppendLine(ex.ToString)
MsgBox(StrTexte.ToString)
Finally
ChaineConnexion = String.Empty
Connexion.Close()
End Try
End Sub
End Class
1.) J'ai assumé que tu cherchais à obtenir la liste de la table
( reacteur ), donc j'ai accumulé les résultats dans des listbox.
2.) Ce code est modifié, car je procède toujours avec des objets
et 3 couches dans le modèle organique.
Interface
Controleur
Data
La couche Data est une couche (DLL) à 2 classes
- L'Objet de service
- Une liste d'objets de service
La couche Controleur contient aussi 2 classes
- Une classe Amie (Friends) - Les requêtes SQL
- Une classe Public - La transaction
donc l'interface n'accède jamais directement à la BD.
Cdt
Lupin
merci !
mais j'ai deux textbox pour afficher les valeurs provenant de ma table ( le numero et la localisation ) et je sais pas comment m'y prendre pour afficher les valeurs
j'ai mes deux textbox : txtnumero et txtlocalisation
pour chacune d'entre elle, dans la propriété " databindings" puis "name" , j'ai selectionné le champ numero et localisation mais rien ne s'affiche ....
comment ça se fait?
mais j'ai deux textbox pour afficher les valeurs provenant de ma table ( le numero et la localisation ) et je sais pas comment m'y prendre pour afficher les valeurs
j'ai mes deux textbox : txtnumero et txtlocalisation
pour chacune d'entre elle, dans la propriété " databindings" puis "name" , j'ai selectionné le champ numero et localisation mais rien ne s'affiche ....
comment ça se fait?
re:
Quelques question :
Connais-tu l'objet [ BindingSource ] ?
As-tu déjà travailler avec des objets fortement typés ?
Il serait souhaitable que tu utilise une classe spécifique pour l'accès
à la BD en affectant les lectures dans des listes fortements typés.
Je n'ai réaliser à ce jour qu'un seul projet DEMO avec, MySQL,
mes connaissances étant plus large avec Oracle, DB2 et Access.
Je vais jeter un coup d'oeil sur mon modèle avec MySQL pour te fournir
plus d'info.
Cdt
Lupin
Quelques question :
Connais-tu l'objet [ BindingSource ] ?
As-tu déjà travailler avec des objets fortement typés ?
Il serait souhaitable que tu utilise une classe spécifique pour l'accès
à la BD en affectant les lectures dans des listes fortements typés.
Je n'ai réaliser à ce jour qu'un seul projet DEMO avec, MySQL,
mes connaissances étant plus large avec Oracle, DB2 et Access.
Je vais jeter un coup d'oeil sur mon modèle avec MySQL pour te fournir
plus d'info.
Cdt
Lupin
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
ça ne me dit rien l'objet BindingSource .
Avec des objets fortement typés c'est à dire ? J'ai effectué quelques modifications, voici mon code:
mais j'ai le message d'erreur suivant : " the connection property has not been set or is null" en gros la connection n'a pas été etablit donc d'une part le probleme doit venir de là ....
merci d'avance !
Avec des objets fortement typés c'est à dire ? J'ai effectué quelques modifications, voici mon code:
Dim connexion As MySqlConnection = New MySqlConnection()
Dim monadaptateur As MySqlDataAdapter = New MySqlDataAdapter()
Dim macom As MySqlCommand = New MySqlCommand
Dim marequete As String
Dim tablereacteur As New DataTable
Dim maliste As New List(Of String)
Dim myDataTable As New DataTable
Try
connexion.Open()
marequete = "SELECT * FROM reacteur"
macom.Connection = connexion
macom.CommandText = marequete
monadaptateur.SelectCommand = New MySqlCommand(marequete, maconnexion)
For i As Integer = 0 To myDataTable.Rows.Count - 1
'je veux afficher les valeurs dans leur txtbox respectif
txtnum.Text = myDataTable.Rows(i)("numero").ToString
txtcap.Text = myDataTable.Rows(i)("capacite").ToString
txt_local.Text = myDataTable.Rows(i)("localisation").ToString
'MsgBox( myDataTable.Rows(i)("nom").ToString)
Next
connexion.Close()
Catch ex As Exception
MsgBox("erreur : " + ErrorToString())
End Try
mais j'ai le message d'erreur suivant : " the connection property has not been set or is null" en gros la connection n'a pas été etablit donc d'une part le probleme doit venir de là ....
merci d'avance !
re:
Voici un objet fortement typé que tu as défini :-)
Dim maliste As New List(Of String)
Autre point
la ligne :
connexion.Close()
devrait se retrouver dans le [ Finally ] du Try/Catch
Problème ou non, la connexion doit toujours être fermé.
Je vais trouver la syntaxe exacte pour la connexion.
À venir ...
Cdt
Lupin
Voici un objet fortement typé que tu as défini :-)
Dim maliste As New List(Of String)
Autre point
la ligne :
connexion.Close()
devrait se retrouver dans le [ Finally ] du Try/Catch
Try
Catch
Finnally
connexion.Close()
End Try
Problème ou non, la connexion doit toujours être fermé.
Je vais trouver la syntaxe exacte pour la connexion.
À venir ...
Cdt
Lupin
oki oki
j'ai utilisé cela en croyant pouvoir afficher les données dans ma liste, de la manière suivante :
numero ...... capacité ..... localisation
j'ai utilisé cela en croyant pouvoir afficher les données dans ma liste, de la manière suivante :
numero ...... capacité ..... localisation
merci, j'ai crée la classe PC_UI_TO_CDA jusque là tout va bien, dans celle-ci j'ai déclaré les variables listbox1,listbox2 et listbox3 .
Peux tu me dire si j'ai bien fait la manipulation suivante, dans ma forme de consultation des reacteurs, j'ai crée un objet de type pc_ui_to_cda, ensuite j'ai voulu appellé la methode "obtenirlisteReacteur" mais à partir de la ça bloque ....
code:
le message d'erreur indique " constructeur: pc_ui_to_cda .... unable to connect to any of the specified mysql hosts ..."
il me dit ça quand j'ai rajouté ces deux lignes ......
je m'y connais en vbnet mais j'ai jamais vraiment pratiqué la manipulation de données avec une base ....
Peux tu me dire si j'ai bien fait la manipulation suivante, dans ma forme de consultation des reacteurs, j'ai crée un objet de type pc_ui_to_cda, ensuite j'ai voulu appellé la methode "obtenirlisteReacteur" mais à partir de la ça bloque ....
code:
Dim monobjet As New PC_UI_TO_CDA
monobjet.ObtenirListeReacteur()
le message d'erreur indique " constructeur: pc_ui_to_cda .... unable to connect to any of the specified mysql hosts ..."
il me dit ça quand j'ai rajouté ces deux lignes ......
je m'y connais en vbnet mais j'ai jamais vraiment pratiqué la manipulation de données avec une base ....
re:
Dans le code que je t'ai soumis, celui-ci était fait pour aller
directement dans le formulaire.
Si tu veux créer une classe contrôleur comme j'ai l'habitude
de faire, il te faut ajouter un constructeur dans la class PC_UI_TO_CDA
et ce mème vide :
Public Sub New()
End Sub
ainsi, tu compile la classe, tu ajoute la référence ( la Dll ), à ton
projet formulaire et ainsi tu devrais pouvour atteindre la méthode.
Autre suggestion, puisque tu semble à l'aise sous VB, je te suggère
de créer une classe objet ainsi qu'une classe collection.
Ex.:
Tu crée un nouveau projet dans lequel tu crée 2 fichiers ( 2 classes )
1 - La classe Objet - n.b. tu dois mettre le bon type en fonction
de ta BD
ici je déclare le membre ( zId ) en string, mais ce pourrait être un Int64 ...
2 - La classe colection ( Liste fortement typé )
tu compile ce projet et tu ajoute cette référence à ton projet
formulaire et à ton projet PC_UI_TO_CDA
Tu modifie la signature de Obtenir ainsi :
donc dans ton code du formulaire, ton code devient :
Dim LaCollection As Reacteur_LST
Dim monobjet As New PC_UI_TO_CDA
LaCollection = monobjet.ObtenirListeReacteur()
ensuite tu peux alimenter n'importe quoi avec la collection.
Cdt
Lupin
Dans le code que je t'ai soumis, celui-ci était fait pour aller
directement dans le formulaire.
Si tu veux créer une classe contrôleur comme j'ai l'habitude
de faire, il te faut ajouter un constructeur dans la class PC_UI_TO_CDA
et ce mème vide :
Public Sub New()
End Sub
ainsi, tu compile la classe, tu ajoute la référence ( la Dll ), à ton
projet formulaire et ainsi tu devrais pouvour atteindre la méthode.
Autre suggestion, puisque tu semble à l'aise sous VB, je te suggère
de créer une classe objet ainsi qu'une classe collection.
Ex.:
Tu crée un nouveau projet dans lequel tu crée 2 fichiers ( 2 classes )
1 - La classe Objet - n.b. tu dois mettre le bon type en fonction
de ta BD
ici je déclare le membre ( zId ) en string, mais ce pourrait être un Int64 ...
Public Class Reacteur_ENT
#Region "--- Attributs ---"
Private Shadows zId As String = String.Empty
Private Shadows zCapacite As String = String.Empty
Private Shadows zLocalisation As String = String.Empty
#End Region
#Region "--- Propriétés ---"
Public Property Id() As String
Get
Return Me.zId
End Get
Set(ByVal value As String)
Me.zId = value
End Set
End Property
Public Property Capacite() As String
Get
Return Me.zCapacite
End Get
Set(ByVal value As String)
Me.zCapacite = value
End Set
End Property
Public Property Localisation() As String
Get
Return Me.zLocalisation
End Get
Set(ByVal value As String)
Me.zLocalisation = value
End Set
End Property
#End Region
#Region "--- Constructeur ---"
Public Sub New()
End Sub
#End Region
End Class
2 - La classe colection ( Liste fortement typé )
Public Class Reacteur_LST
Inherits List(Of Reacteur_ENT)
End Class
tu compile ce projet et tu ajoute cette référence à ton projet
formulaire et à ton projet PC_UI_TO_CDA
Tu modifie la signature de Obtenir ainsi :
Public Function ObtenirListeReacteur() As Reacteur_LST
' La partie de la boucle devient :
Dim MaCol As Reacteur_LST
Dim EntX As Reacteur_ENT
For Each DataRowLocal In MonDataTable.Rows
EntX = New Reacteur_ENT
If (DataRowLocal.Item(0) IsNot Nothing) Then
EntX.Id =(Convert.ToString(DataRowLocal.Item(0)))
End If
If (DataRowLocal.Item(1) IsNot Nothing) Then
EntX.Capacite =(Convert.ToString(DataRowLocal.Item(1)))
End If
If (DataRowLocal.Item(2) IsNot Nothing) Then
Entx.Localisation = (Convert.ToString(DataRowLocal.Item(2)))
End If
MaCol.Add(EntX)
Next
Return MaCol
End Function
donc dans ton code du formulaire, ton code devient :
Dim LaCollection As Reacteur_LST
Dim monobjet As New PC_UI_TO_CDA
LaCollection = monobjet.ObtenirListeReacteur()
ensuite tu peux alimenter n'importe quoi avec la collection.
Cdt
Lupin