IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Ouverture propre d'une connexion SQL


Sujet :

VB.NET

  1. #1
    Membre expérimenté
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Points : 1 500
    Points
    1 500
    Par défaut Ouverture propre d'une connexion SQL
    Bonjour,

    Je n'ai jamais traité de SQL en VB, et je me pose quelques questions de structure.

    Pouvez vous me dire quelle structure ci dessous est la plus "propre"?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    Public Class Form 1
     
    Public DBConnection As OleDbConnection = New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & My.Settings.sourcebdd & ";Jet OLEDB:Database Password=" & My.Settings.mdpbase & ";")
    Public Command As OleDbCommand = DBConnection.CreateCommand()
     
    Private Sub sub1()
    DBConnection.Open()
    Command.CommandText = "..."
    ...
    DBConnection.Close()
     
    Private Sub sub2()
    DBConnection.Open()
    Command.CommandText = "..."
    ...
    DBConnection.Close()
    End Sub
    Sub
     
    End Class
    ou


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    Public Class Form 1
     
    Private Sub sub1()
    Dim DBConnection As OleDbConnection = New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & My.Settings.sourcebdd & ";Jet OLEDB:Database Password=" & My.Settings.mdpbase & ";")
    Dim Command As OleDbCommand = DBConnection.CreateCommand()
    DBConnection.Open()
    Command.CommandText = "..."
    ...
    DBConnection.Close()
     
    Private Sub sub2()
    Dim DBConnection As OleDbConnection = New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & My.Settings.sourcebdd & ";Jet OLEDB:Database Password=" & My.Settings.mdpbase & ";")
    Dim Command As OleDbCommand = DBConnection.CreateCommand()
    DBConnection.Open()
    Command.CommandText = "..."
    ...
    DBConnection.Close()
    End Sub
    Sub
     
    End Class
    Ou y a-t-il mieux? Dans la déclaration DIm / Public / Pivate ?
    Mon but étant de ne pas ouvrir trop de connections quand ça pourrait être inutile; alléger le code. Qu'à l'execution il ne se perde pas... enfin ce genre de trucs

    Merci

  2. #2
    Membre expérimenté
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Points : 1 500
    Points
    1 500
    Par défaut
    En ayant relu des tuto, j'ai trouvé ma réponse.
    Par contre une autre question est apparue:

    Je lis ici http://plasserre.developpez.com/cour...bases-donnees2 qu'on peut utiliser un DataReader pour lire et que c'est extrement rapide, mais on peut tout aussi bien travailler avec un DataSet / DataAdapter pour lire / ecrire / modifier des données.

    Alors quoi utiliser au final? J'utilise simplement des ExecuteNonQuery pour modifier mes données, mais j'hésite à prendre des DataSet maintenant...

    Ah oui et question importante: pour éviter les injections SQL, j'utilise des paramètres associés à ma Command; est ce que c'est automatique avec des DataSet?

    Une suggestion? Merci

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par Anduriel Voir le message
    Pouvez vous me dire quelle structure ci dessous est la plus "propre"?
    La deuxième, clairement.

    La connexion et la commande n'ont aucune raison d'être des membres de ta classe, encore moins des membres publics. Déclare les comme des variables locales dans chaque méthode, et ferme la connexion dès que possible. D'ailleurs, pour être bien sûr de fermer la connexion même en cas d'erreur, tu peux utiliser un bloc Using[/QUOTE]


    Citation Envoyé par Anduriel Voir le message
    Alors quoi utiliser au final? J'utilise simplement des ExecuteNonQuery pour modifier mes données, mais j'hésite à prendre des DataSet maintenant...
    C'est deux façons différentes de travailler en fait... avec un DataSet, tu conserves une copie des données de la base en mémoire. Tu travailles sur ces données, éventuellement tu les modifies, et tu reportes ensuite les modifications sur la base avec un DataAdapter. C'est ce qu'on appelle le mode "déconnecté", parce que tu n'as pas besoin de rester connecté à la base pour travailler sur les données

    En mode connecté, les données ne sont pas conservées en mémoire (sauf bien sûr si tu le fais manuellement). Chaque fois que tu as besoin d'une donnée particulière, tu dois refaire une requête pour l'obtenir.

    Les datasets sont une fonctionnalité assez puissante, surtout parce que tu peux tirer parti du DataBinding pour afficher les données dans un DataGridView (ou autre contrôle) plus facilement qu'avec de simples listes. Mais il faut bien comprendre le fonctionnement, je vois souvent des codes de débutants qui utilisent les datasets complètement de travers...

    Citation Envoyé par Anduriel Voir le message
    Ah oui et question importante: pour éviter les injections SQL, j'utilise des paramètres associés à ma Command; est ce que c'est automatique avec des DataSet?
    Si tu utilises les DataAdapters créés automatiquement par le designer : oui, c'est automatique

Discussions similaires

  1. erreur etrange lors d'une connexion à sql server
    Par bossun dans le forum ASP.NET
    Réponses: 6
    Dernier message: 10/10/2007, 15h19
  2. Probleme de droit avec une connexion sql server 2005
    Par mduarte dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 27/08/2007, 11h12
  3. publier une connexion sql dans un project !
    Par coucoulido dans le forum Accès aux données
    Réponses: 3
    Dernier message: 26/02/2007, 13h12
  4. Impossible d'ouvrir une connexion à SQL Server
    Par lamiruth dans le forum Accès aux données
    Réponses: 1
    Dernier message: 18/02/2007, 16h40
  5. [C#] Comment savoir si une connexion SQL est disponible ?
    Par mister3957 dans le forum Accès aux données
    Réponses: 4
    Dernier message: 19/10/2006, 11h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo