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

Résolu
BasicZx81 Messages postés 140 Date d'inscription samedi 5 mars 2011 Statut Membre Dernière intervention 13 août 2013 - 16 janv. 2012 à 19:53
BasicZx81 Messages postés 140 Date d'inscription samedi 5 mars 2011 Statut Membre Dernière intervention 13 août 2013 - 17 janv. 2012 à 07:53
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

BasicZx81 Messages postés 140 Date d'inscription samedi 5 mars 2011 Statut Membre Dernière intervention 13 août 2013
17 janv. 2012 à 07:53
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
3
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 222
16 janv. 2012 à 20:00
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
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 222
16 janv. 2012 à 20:02
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
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 222
16 janv. 2012 à 20:11
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
BasicZx81 Messages postés 140 Date d'inscription samedi 5 mars 2011 Statut Membre Dernière intervention 13 août 2013
16 janv. 2012 à 20:56
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()
0