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 :

Code de connexion à une BDD simplifié


Sujet :

VB.NET

  1. #1
    Membre averti
    Inscrit en
    Avril 2006
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 35
    Par défaut Code de connexion à une BDD simplifié
    Bonjour à tous,
    Voila, j'ai créé un formulaire de connexion à une Base de donnée et je voudrais savoir si il y a plus simple que mon code ci-dessous pour vérifier l'accès à la BDD car je trouve qu'il est assez "compliqué"...
    De plus, je voudrais savoir comment on peut fermer définitivement une form avant de passer à une autre car avec la méthode "show" et "hide" ça ne le ferme pas complétement...
    Merci de vos réponses


    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
     
    Imports System.Data
    Imports System.Data.OleDb
     
    Public Class Frm_Connexion
     
        Inherits System.Windows.Forms.Form
     
        Private Sub Btn_Connexion_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Btn_Connexion.Click
     
            'Vérifie le Mot de passe
     
            Dim ObjetConnexion As OleDbConnection
            Dim ObjetCommand As OleDbCommand
            Dim ObjetDataAdapter As OleDbDataAdapter
            Dim ObjetDataSet As New DataSet
            Dim StrSql As String
            Dim ObjetDataTable As DataTable
            Dim ObjetDataRow As DataRow()
            Dim StrConnect As String
            Dim i As Integer
     
            StrConnect = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\BDD.accdb"
            StrSql = "SELECT * FROM ID WHERE ID_Login = '" & TxtB_Login.Text & "'"
     
            Try
                ObjetConnexion = New OleDbConnection
                ObjetConnexion.ConnectionString = StrConnect
                ObjetConnexion.Open()
                ObjetCommand = New OleDbCommand(StrSql)
                ObjetDataAdapter = New OleDbDataAdapter(ObjetCommand)
                ObjetCommand.Connection = ObjetConnexion
                ObjetDataAdapter.Fill(ObjetDataSet, "ID")
                ObjetDataTable = ObjetDataSet.Tables("ID")
     
                For i = 0 To (ObjetDataSet.Tables("ID").Rows.Count) - 1
                    If ObjetDataSet.Tables("ID").Rows(i)(1).ToString() = TxtB_Login.Text Then
                        If ObjetDataSet.Tables("ID").Rows(i)(2).ToString() = TxtB_Mdp.Text Then
                            NumID = ObjetDataSet.Tables("ID").Rows(i)(0)
                            NomID = ObjetDataSet.Tables("ID").Rows(i)(3)
                            PrenomID = ObjetDataSet.Tables("ID").Rows(i)(4)
                            Form2.Show()
                            Me.Hide()
                        Else
                            MsgBox("Mauvais mot de passe", MsgBoxStyle.Critical, "Erreur")
                            TxtB_Mdp.Text = ""
                            TxtB_Mdp.Focus()
                        End If
                    Else
                        MsgBox("Mauvais login", MsgBoxStyle.Critical, "Erreur")
                        TxtB_Login.Text = ""
                        TxtB_Mdp.Text = ""
                        TxtB_Login.Focus()
                    End If
                Next i
     
                'Objet connectée
                ObjetConnexion = Nothing
                ObjetCommand = Nothing
                ObjetDataAdapter = Nothing
                'Objet déconnectée
                ObjetDataSet = Nothing
                ObjetDataTable = Nothing
                ObjetDataRow = Nothing
     
            Catch ex As Exception
                MsgBox("Erreur", MsgBoxStyle.Critical, "Erreur")
            End Try
     
        End Sub
     
        Private Sub Btn_Fermer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btn_Fermer.Click
            'Ferme le formulaire
            Me.Close()
        End Sub

  2. #2
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    En vrac :

    - tu ne fermes pas ta connexion

    - le fait de mettre des variables locales à Nothing n'a absolument aucun interêt.

    - il ne sert pas à grand chose d'utiliser un DataAdapter pour faire juste une lecture. Utiliser un DbDataReader plutôt.

    - tu mets tes objets à nothing (ce qui ne sert à rien, déjà dit) mais tu ne les dispose pas. (c'est pas grave, mais c'est laid).

    - il est assez crade d'aller chercher les colonnes par leur position ordinale plutôt que par leur nom (bonjour la maintenance le jour où tu en rajoutes une !).

    Par ailleurs, il n'est pas d'usage d'utiliser la notation hongroise quand on est dans le contexte d'un langage pur objet (ca fait d'ailleurs un peu ridicule).

  3. #3
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 198
    Par défaut
    totalement +1

    et pour la question initiale, il faut te faire une classe qui encapsule tout ca à laquelle tu donnes juste la requete en gros
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  4. #4
    Membre émérite Avatar de methylene
    Profil pro
    Inscrit en
    Février 2010
    Messages
    659
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2010
    Messages : 659
    Par défaut
    Hum pas compris cette phrase :

    Par ailleurs, il n'est pas d'usage d'utiliser la notation hongroise quand on est dans le contexte d'un langage pur objet (ca fait d'ailleurs un peu ridicule).
    C'est quoi la "notation hongroise" lol ?

  5. #5
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par methylene Voir le message
    Hum pas compris cette phrase :



    C'est quoi la "notation hongroise" lol ?
    http://fr.wikipedia.org/wiki/Notation_hongroise

    je parle de ta manie bizarre d'appeler tes variables en commençant par "objet". Comme en .Net tout est objet, on ne comprend pas bien l'interêt de la chose.

    Ceci dir la notation hongroise "apps" peut éventuellement se justifier, mais la notation hongroise "System", pas vraiment.

    Surtout avec des IDE aussi sophistiqués que VS, alors qu'il est si facile d'aller voir où et et comment une variable est décrite.

    En revanche, c'est une bonne idée d'adopter une schéma de nommage reflétant la portée de la variable (variable membre, variable locale, etc ....)

  6. #6
    Membre émérite Avatar de methylene
    Profil pro
    Inscrit en
    Février 2010
    Messages
    659
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2010
    Messages : 659
    Par défaut
    je parle de ta manie bizarre d'appeler tes variables en commençant par "objet"
    Ce n'est pas moi l'auteur du post, mais merci de l'explication.

  7. #7
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par methylene Voir le message
    Ce n'est pas moi l'auteur du post, mais merci de l'explication.
    Oups ... désolé

  8. #8
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 198
    Par défaut
    Citation Envoyé par methylene Voir le message
    C'est quoi la "notation hongroise" lol ?

    il te manque le réflexe google ...

    moi non plus je ne connaissais pas ce terme, mais il suffit de demander à google au lieu faire comme ceux qui postent pour des questions simples auxquelles F1 pourraient répondre

    = comme préfixer par str pour les string

    par contre je suis pour cette notation pour ce qui est des controles (FRM TXT etc...), la définition étant déportée, le code reste plus lisible quand même (surtout quand on poste son code sur un forum ^^)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  9. #9
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    par contre je suis pour cette notation pour ce qui est des controles (FRM TXT etc...), la définition étant déportée, le code reste plus lisible quand même (surtout quand on poste son code sur un forum ^^)
    Je suis entiérement d'accord avec toi. Il ne s'agit pas ici d'être "ayatollesque", mais simplement de dire que il n'y a pas lieu d'utiliser ce type de notation systématiquement.

    Autre exemple, la notation hongroise peut parfois avoir une signification métier :

    - Imaginons une variable "UserName" de type string. Ici, appeler sa variable StrUserName est ridicule.

    - A l'inverse, prenons "dateTimeLastLogin" (au hasard) de type DateTime; ici, DateTime dans le nom ne vise pas à indiquer le type DateTime mais que le contenu "métier" de la variable est un date/heure; donc ici, la notation hongroise est valide et justifiée. (le nommage lastLogin serait ambigüe).

  10. #10
    Membre averti
    Inscrit en
    Avril 2006
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 35
    Par défaut
    Merci à tous pour vos réponses!!
    La notation hongroise je l'ai utilisé parce ce qu'elle est utilisée dans le cours de Philippe Lasserre au niveau du chapitre des Dataset...
    Et pour ma question des form qui se ferme pas forcement? comment je peux faire pour passer de form en form en fermant définitivement la précédente?
    Merci

  11. #11
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 198
    Par défaut
    .hide cache la fenetre (ca équivaut à .visible = false)

    .close ferme une fenetre

    .dispose ferme une fenetre et la détruit (effacement dans la mémoire)

    .dispose est appelé automatiquement si tu oublies de le faire, mais ca peut etre quelques dizaines de minutes plus tard, donc autant le faire explicitement
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  12. #12
    Membre émérite Avatar de methylene
    Profil pro
    Inscrit en
    Février 2010
    Messages
    659
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2010
    Messages : 659
    Par défaut
    Et le contraire de .hide c'est .show au passage, on sait jamais :-)

  13. #13
    Membre averti
    Inscrit en
    Avril 2006
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 35
    Par défaut
    Alors quand je fais sur ma form1 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Form2.Show()
    Me.Hide()
    et sur ma form2 je fais :

    Et la ca me ferme tout...

  14. #14
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 198
    Par défaut
    il faut modifier les propriétés de ton projet qui est réglé sur
    "fermer l'appli quand le formulaire de démarrage se ferme" et mettre
    "fermer l'appli quand toutes les fenetres sont fermées"

    de plus, il ne faut pas utiliser le nom d'une form pour l'appeler mais l'instancier
    en effet vb est le seul langage de .net à permettre l'utilisation d'une instance implicite, mais qui peut causer des bugs à long terme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    dim f as new form2
    f.show
    me.dispose
    ca devient moins simple de modifier quelque chose d'une form à une autre (il faut alors passer l'instance à stocker dans une variable) mais c'est plus propre
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  15. #15
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    en effet vb est le seul langage de .net à permettre l'utilisation d'une instance implicite


    Une réminiscence de VB6 sans doute ?

  16. #16
    Membre averti
    Inscrit en
    Avril 2006
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 35
    Par défaut
    J'ai fait comme tu as dit Pol63 sauf que quand mon form2 s'ouvre et que j'appuie sur la croix pour fermer l'application, le débugger ne se ferme pas...
    J'ai changé l'option mode d'arrêt : "à la fermeture du dernier formulaire"

  17. #17
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 198
    Par défaut
    Citation Envoyé par Bluedeep Voir le message


    Une réminiscence de VB6 sans doute ?

    surement
    m'enfin c'est nimp car ca doit etre une variable dans un module quelque part à la compilation
    mais quand on ouvre plusieurs fois un form, ca ne retourne que le dernier ouvert


    Citation Envoyé par toto2022 Voir le message
    J'ai fait comme tu as dit Pol63 sauf que quand mon form2 s'ouvre et que j'appuie sur la croix pour fermer l'application, le débugger ne se ferme pas...
    J'ai changé l'option mode d'arrêt : "à la fermeture du dernier formulaire"
    si quand tu ne vois plus de form ouvert l'appli ne se ferme pas, c'est que soit tu as des form ouverts et non visibles (encore du .hide)
    soit que tu as un thread non background en cours d'exécution (ca ne doit pas être ca vu que tu débutes)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

Discussions similaires

  1. [D2005] Connexion à une BDD Access
    Par landry005 dans le forum Bases de données
    Réponses: 6
    Dernier message: 24/02/2006, 11h05
  2. Réponses: 5
    Dernier message: 03/02/2006, 13h47
  3. connexion à une bdd mysql en asp
    Par asetti dans le forum ASP
    Réponses: 3
    Dernier message: 31/10/2005, 18h31
  4. [Applet][MySQL] connexion à une BDD
    Par Michel38 dans le forum JDBC
    Réponses: 19
    Dernier message: 20/07/2005, 14h59
  5. Erreur de connexion à une BDD SQL Server 2000 avec BDE
    Par SchpatziBreizh dans le forum Bases de données
    Réponses: 3
    Dernier message: 17/06/2005, 11h22

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