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 :

Bien programmé module


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations forums :
    Inscription : Août 2011
    Messages : 103
    Par défaut Bien programmé module
    Bonjour, voila je viens de réaliser un p'tit bout de programme qui permet au lancement de l'application de s'inscrire et ainsi pouvoir utiliser l'apllication et aussi recuperer son mot si oublier l'application marche mais j'ai l'impression que au fur et a mesure du développement je me suis un peu perdu.
    Si quelqu'un pourrait jeté un coup d'oeil et me dire ce qui ne vas pas ? car programmé c'est possible mais bien programmé c'est un peu plus compliqué. merci d'avance.

    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
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
     
    Imports System.Data
    Imports System.Data.OleDb
    Imports DAO
    Imports DAO.LanguageConstants
     
    Module base
     
        'CREE le chemin d'accès à la base
        Public Function createChemin() As String
            Dim chemin As String
            Dim dbname As String = "Base"
            Dim cheminApp As String = Application.StartupPath
            cheminApp &= "\"
            chemin = cheminApp & dbname & ".mdb"
            'MessageBox.Show(chemin)
            Return chemin
        End Function
     
        ' TEST si la base existe
        'renvoie ok si base existe
        Public Function test() As Boolean
            If System.IO.File.Exists(createChemin()) Then
                Return True
            Else
                Return False
            End If
        End Function
     
        'Declarer la connexion
        Private Cnx As OleDbConnection
        'Objet commande
        Private Cmd As OleDbCommand
        'Paramètre de connexion
        Private dta As OleDbDataAdapter
        Private CnxStr As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & createChemin() & ";"
        Private dts As New DataSet
        Private dt As DataTable
        Private dtc As DataColumn
        Private dtr As DataRow
     
        Public Sub connection()
            Try
                Cnx = New OleDbConnection
                'Donner à la propriété ConnectionString les paramètres de connexion
                Cnx.ConnectionString = CnxStr
                'Ouvrir la connexion
                Cnx.Open()
                'Instancier un objet Commande
                Cmd = New OleDbCommand
                'Lier Commande et Connexion
                Cmd.Connection = Cnx
            Catch ex As Exception
                MsgBox("Erreur de création de la table" & vbCrLf & ex.Message, , "Erreur")
            End Try
        End Sub
        Public Sub create_base()
     
            Try
                Dim dbe As New DBEngine
                Dim db As Database
     
                db = dbe.CreateDatabase("base", dbLangGeneral)
     
                If Not (db Is Nothing) Then db.Close()
            Catch ex As Exception
                MsgBox("Erreur de création de la base de donnée" & vbCrLf & ex.Message, , "Erreur")
            End Try
     
            connection()
            Try
                'Indiquer le type de commande
                Cmd.CommandType = CommandType.Text
                Cmd.CommandText = "CREATE TABLE USERS (LOGIN CHAR(8) NOT NULL PRIMARY KEY,MDP CHAR(8) NOT NULL,QUESTION VARCHAR(32) NOT NULL,REPONSE CHAR(8) NOT NULL)"
                'on exécute la commande
                Cmd.ExecuteNonQuery()
                'Fermer la connexion
                Cnx.Close()
     
            Catch ex As Exception
                MsgBox("Erreur de création de la table USERS" & vbCrLf & ex.Message, , "Erreur")
            End Try
     
        End Sub
     
        Public Function insert_user(ByVal login As String, ByVal mdp As String, ByVal question As String, ByVal rep As String) As Boolean
     
            connection()
            Try
                'Indiquer le type de commande
                Cmd.CommandType = CommandType.Text
                Cmd.CommandText = "INSERT INTO USERS (LOGIN, MDP, QUESTION, REPONSE) VALUES ('" & login & "','" & mdp & "','" & question & "','" & rep & "')"
                'on exécute la commande
                Cmd.ExecuteNonQuery()
                'Fermer la connexion
                Cnx.Close()
                Return True
            Catch ex As Exception
                MsgBox("Erreur dans l'insertion de d'un USERS" & vbCrLf & ex.Message, , "Erreur")
                Return False
            End Try
     
        End Function
     
        'Charge la table USERS en connectant
        Public Sub TableUSERS(ByVal log As String)
            Dim sql As String
            dts.Clear()
            connection()
            Try
                'Indiquer le type de commande
                Cmd.CommandType = CommandType.Text
                sql = "select * from USERS where login ='" & log & "'"
                'on exécute la commande
                Cmd = New OleDbCommand(sql)
                dta = New OleDbDataAdapter(Cmd)
                Cmd.Connection() = Cnx
                dta.Fill(dts, "USERS")
                dt = dts.Tables("USERS")
            Catch ex As Exception
                MsgBox("Erreur de recherche dans la table USERS" & vbCrLf & ex.Message, , "Erreur")
            End Try
        End Sub
     
        'Vérifie si le login existe ou pas
        Public Function rech_user(ByVal login As String) As Boolean
            TableUSERS(login)
            If dt.Rows.Count() = 0 Then
                'MessageBox.Show(dt.Rows.Count())
                Return False
            Else
                'MessageBox.Show(dt.Rows.Count())
                Return True
            End If
            'Fermer la connexion
            Cnx.Close()
        End Function
     
        'Rempli le combobox de la question et retourne la reponse
        Public Function info_user(ByVal login As String) As String
            TableUSERS(login)
            mdpoubli.TBquest.Text = dt.Rows(0).Item(2)
            Return dt.Rows(0).Item(3)
        End Function
        'renvoie le mot de passe
        Public Function mdp_user(ByVal login As String) As String
            TableUSERS(login)
            Return dt.Rows(0).Item(1)
        End Function
    End Module

  2. #2
    Membre Expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 793
    Par défaut
    Utiliser des requêtes paramétrées
    Il faut éviter de stocker le mot de passe en clair, préférer un hashage MD5 que l'on compare au hashage MD5 du mot de passe saisit par l'utilisateur

  3. #3
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 197
    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 197
    Par défaut
    le mieux est de faire une méthode qui exécute une requete qu'on lui passe en paramètre peu importe la requete
    ca évite de faire une méthode pour chaque requete que tu as à faire

    après pour les users, il ne faut pas mélanger ca avec du code qui sert à se connecter et exécuter des requetes
    il faut faire une classe à part qui envoie les requetes à la classe qui s'occupe de faire ca
    le principe est de découper

    un module n'est pas très évolutif, une classe serait mieux (si un jour tu veux faire du multithreading, ca sera impossible avec un module)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  4. #4
    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
    un module n'est pas très évolutif, une classe serait mieux (si un jour tu veux faire du multithreading, ca sera impossible avec un module)
    Je connaissais le Module à la (très lointaine) époque du VB6 mais j'ai un peu de mal à comprendre à quoi il correspond en VB.Net (que je ne pratique pas). Equivalent à une classe statique ?

  5. #5
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Février 2003
    Messages
    2 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 2 194
    Par défaut
    Citation Envoyé par Bluedeep Voir le message
    Equivalent à une classe statique ?
    Oui

  6. #6
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations forums :
    Inscription : Août 2011
    Messages : 103
    Par défaut
    Pol63 tu parlais de classe pour les users alors en faite le mieux serait de mettre dans la classe tous les traitement qui concerne les users (Base de donnée) et dans un module le reste (les fonctions ou procédure ) ?

Discussions similaires

  1. Comment bien programmer en PHP ?
    Par Community Management dans le forum Langage
    Réponses: 257
    Dernier message: 01/12/2014, 15h48
  2. Réponses: 29
    Dernier message: 12/07/2007, 11h55
  3. [Conventions] Bien programmer un site complet en PHP
    Par jpean.net dans le forum Langage
    Réponses: 3
    Dernier message: 30/03/2007, 14h16
  4. Bien programmer une classe avec sa gestion d'erreur
    Par chris81 dans le forum Framework .NET
    Réponses: 8
    Dernier message: 13/02/2007, 18h13
  5. Comment bien programmer en C ?
    Par lastrecrue dans le forum C
    Réponses: 14
    Dernier message: 12/07/2006, 12h44

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