Conseil sur l'ouverture/fermeture de connexion à une base

Bonjour à tous,

Je reprends actuelement un codage (pour ceux qui ne savent pas ^^) et je m’apercois que la personne avant moi a fait plein de connexion / deco dans une fonction.

Voici ce qu’il fait 5 fois (le code varie) dnas une fonction de 300 lignes qui prend 1 seconde à s’executer.


Try
                ConnPick1.Open()
                Catch ex As MySqlException
                    MessageBox.Show("Error impossible de se connecter au serveur *****: " + ex.Message)
                End Try

                cmd = New MySqlCommand(cmdstr, ConnPick1)
                flagError = False

                Try
                    reader = cmd.ExecuteReader()
                    While (reader.Read())
                        classement_defauts(X, 4) = reader.GetString(0)
                    End While
                Catch ex As Exception
                    If flagError = False Then
                        MessageBox.Show("Failed to populate database list: " + ex.Message)
                        flagError = True
                    End If
                Finally
                    If Not reader Is Nothing Then reader.Close()
                End Try
                ***
                'ConnPick1.Close()

Personnellement je mettrai une connexion au début et une déco à la fin…

Pensez vous qu’il ai fais sa pour une gestion d’erreur ? Sachant que le code s’execute en 1 seconde je ne vois pas trop l’interet ^^.

Bonjour,

Oui il a fait ça pour gérer son erreur, même si le code s’éxécute en 1 seconde s’il y a une erreur tu pourra la voir et donc la traité plus rapidement. Alors que au contraire si tu fais une connexion au début et tu deconnecte à la fin tu ne pourra pas forcément voir ou ton code a planté.

En même temps, si tu fais des opérations base de données, tu es censée les faire transactionnelles… Si tu crée une connexion, fait un update, ferme la connexion, ouvre la connexion, fait un autre update, ferme la connexion, c’est pas trop transactionnel :slight_smile:

Si le second update plante, tu dois logiquement pouvoir rollbacker le premier ce qui ne sera pas le cas ici.

Ce n’ai que de la lecture de base de données, par contre c’est dans une usine sur une chaine de production et cette partie de code est utilisé avec une timer toute les 5 secondes.

Je ne comprends pas le terme rollbacker.

Annuler les modifications ?