Conserver l'instance des objets Connexion, CommandBuilder après le remplissage d

Résolu
Signaler
Messages postés
140
Date d'inscription
samedi 5 mars 2011
Statut
Membre
Dernière intervention
13 août 2013
-
Messages postés
140
Date d'inscription
samedi 5 mars 2011
Statut
Membre
Dernière intervention
13 août 2013
-
Bonjour,
J'aimerais beaucoup avoir un conseil concernant la bonne façon d'utiliser la connexion et les objets ADO.net.
En particulier dans le cadre d'un travail sur un dataset, est t'il nécessaire ou conseillé de conserver les instances d'objets qui ont servies lors de la connexion initiale ?
En clair je sais ouvrir une base et remplir un dataset mais je ne sais pas quand ni comment fermer les objets et la connexion proprement.
Le but, bien sur est de ne pas créer des accès à la base plus que nécessaire ou charger inutilement la mémoire.

Je vous remercie beaucoup si vous pouvez m'éclairer si il y a des bonnes pratiques ou des méthodes à éviter.

5 réponses

Messages postés
140
Date d'inscription
samedi 5 mars 2011
Statut
Membre
Dernière intervention
13 août 2013

Bonjour, j'ai trouvé une solution. Je supprime la ligne DBDataAdapter.dispose de facon à conserver une instance de tous mes objets ayant servi à l'ouverture de la base (en particulier le DBDataAdapter). Ainsi ,lorsque j'ai fini de manipuler le Dataset, j'execute une procedure de mise à jour de cette facon :

DB Connexion.Open
Dim bldr = New OleDbCommandBuilder(DBDataAdapter)
DBDataAdapter.Update(objDBDataSet, "Projets")
DBDataAdapter.Update(objDBDataSet, "Etudes_taches_Liste")
DBConnexion.close
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
240
Bonjour,
En clair je sais ouvrir une base et remplir un dataset mais je ne sais pas quand ni comment fermer les objets et la connexion proprement.

Lorsque tu n'en as plus besoin me parait une réponse évidente.

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
240
Pour le reste, le "comment" dépend très largement du "comment" tu as connecté, créé les objets, etc ...


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
240
Et ne pas hésiter à consulter MSDN, entre autres,
Y lire, par exemple :
CECI
ET CELA

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
140
Date d'inscription
samedi 5 mars 2011
Statut
Membre
Dernière intervention
13 août 2013

Bonsoir et merci d'essayer de m'aider. Voici le code que j'utilise pour ouvrir la base.
Ensuite je manipule les données de mon dataset mais je ne sais pas mettre à jour la base.
A la fin de mon code je détruit l'instance de DBDataAdapter et je ferme la connexion.
A la fin de cette procédure d'ouverture de la base certains objets deviennent hors de portés donc inutilisable dans ma procédure de mise à jours de la base. Est que je doit conserver certains objet créer lors de l'ouverture de la base pour réutiliser ces mêmes instances pour lors de la mise à jour de la base , cela concerne particulierement les objets (DBConnexion, DBCommand et DBDataAdapter) étant donné que j'en ai peut être besoin pour mettre à jour la base ? mais au fait comment fait t'on pour mettre à jour la base ? Ma question peut paraitre bête mais je ne vois pas trés bien comment faire. Ca serait super si vous pouvez m'aider.


        Try
            StrConnect = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source= " & _StrDBpathName
            DBconnection = New OleDbConnection(StrConnect)
            DBcommand = New OleDbCommand()
            DBcommand.Connection = DBconnection
            DBconnection.Open()
        Catch
            MsgBox("La connexion à echoué, l'application va se fermer !", MsgBoxStyle.Critical)
            Application.Exit()
        End Try

        'Initialisation de la chaîne contenant l'instruction SQL
        'sql = "SELECT * FROM Projets"
        Dim sqlProjets As String = "SELECT ID, NOM, ID_CPT, CHEF_PROJET, DEBUT, DESCRIP, FIN, NB_INFOS_FINIS, STATUT, TOTAL_INFOS, PROGRES_INFOS FROM Projets"
        Dim sqlEtudes_Taches_Liste As String = "SELECT ID_TACHE, STAT_ICO, SUJET, PRIORITE, ALERTE, ASSIGN, STATUT, ECHEANCE, AUTEUR, DATE_EDIT, MESSAGE FROM Etudes_Taches_liste"
        'Instancier un objet Commande
        'DBcommand = New OleDbCommand(sql)
        'Instancier un objet Adapter
        'DBDataAdapter = New OleDbDataAdapter(DBcommand)
        DBDataAdapter = New OleDbDataAdapter(sqlProjets, DBconnection)
        'Avec l'aide de la propriété Fill du DataAdapter charger le DataSet
        DBDataAdapter.Fill(objDBDataSet, "Projets")
        DBDataAdapter.SelectCommand.CommandText = sqlEtudes_Taches_Liste
        DBDataAdapter.Fill(objDBDataSet, "Etudes_Taches_Liste")

        DBDataAdapter.Dispose()
        DBconnection.Close()