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 :

[Débutant] Aide objet en VB .NET


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 57
    Par défaut [Débutant] Aide objet en VB .NET
    Bonjour,
    Je développe actuellement un site en ASPX / VB .NET à titre didactif et je souhaiterais avoir quelques infos concernant la notion d'objet en VB .NET
    Voici mon code qui me servirai à faire des requêtes :

    J'ai un fichier ou je veut définir une classe: SQLOBJ.vb
    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
     
    Public Class SQLOBJ
        Shared dr As System.Data.SqlClient.SqlDataReader
        Shared dbConnection As New System.Data.SqlClient.SqlConnection(ConfigurationManager.ConnectionStrings("BaseSQL").ConnectionString)
        Shared Function Requete(ByVal Sql As String) As Boolean
            dbConnection.Open()
            Dim cmd As New System.Data.SqlClient.SqlCommand(Sql, dbConnection)
            'If Not dr.IsClosed Then
            'dr.Close()
            'End If
            If Sql.Contains("SELECT") Then
                dr = cmd.ExecuteReader()
            ElseIf Sql.Contains("INSERT") Or Sql.Contains("DELETE") Or Sql.Contains("UPDATE") Then
                cmd.ExecuteScalar()
                dbConnection.Close()
            End If
        End Function
        Shared Function Pickup(ByVal Index As String) As String
            If dr(Index).ToString <> "" Then
                Return dr(Index).ToString
            Else
                Return ""
            End If
        End Function
        Shared Function Read() As Boolean
            If Not dr.IsClosed And dr.Read() Then
                Return True
            Else
                dbConnection.Close()
                Return False
            End If
        End Function
    End Class
    Dans mon code, je souhaite maintenant créé un objet de se type, donc je le déclare comme suite:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
            Dim test As New SQLOBJ
            test.Requete("SELECT [Nom] FROM [Clients]")
            While test.Read()
                Label1.Text &= test.Pickup("Nom") & "<br/>"
            End While
        End Sub
    Cela fonctionne mais je suis pas sur que si 2 personnes utilise en même temps mon SQLOBJ.vb il n'y est pas de conflit (dans le sens ou le datareader serait le même ?), vu que c'est une appli web.

    J'aimerais avoir des critiques pour m'expliquer se qui ne va pas pourquoi et comment je pourrais faire cela.

    J'espère que quelqu'un comprendra ou je veut en venir parce que je galère un peu à m'exprimer sur le sujet.

    Merci

  2. #2
    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 : 43
    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
    Par défaut
    Citation Envoyé par samzorINCA Voir le message
    Cela fonctionne mais je suis pas sur que si 2 personnes utilise en même temps mon SQLOBJ.vb il n'y est pas de conflit (dans le sens ou le datareader serait le même ?), vu que c'est une appli web.
    Tu fais bien de te poser la question, car il y aura effectivement un problème...

    Tous les membres de ta classe sont déclarés en statique (Shared), ce qui signifie qu'ils sont partagés entre toutes les instances de la classe (d'ailleurs vu que tout est statique tu n'as pas besoin de déclarer une instance de SQLOBJ, tu pourrais appeler directement SQLOBJ.Requete... mais ce n'est pas la bonne façon de faire)

    Enlève simplement les modifieurs Shared, et tout devrait bien se passer.

  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
    ce n'est pas la seule chose que j'aurais souligné

    un label qui appelle une fonction qui lit un reader ca me semble étrange comme fonctionnement, en général on fait une classe qui s'occupe de lire dans la base de données et qui charge des objets, puis on lit les objets ...
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  4. #4
    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 : 43
    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
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    ce n'est pas la seule chose que j'aurais souligné
    Certes... mais si j'avais indiqué tout ce qui n'allait pas, ça m'aurait pris une plombe, et j'ai eu la flemme

    En fait, c'est rarement utile de faire une classe dans ce style. L'API ADO.NET est très pratique telle qu'elle est, et en général toutes les tentatives de "wrapper" son utilisation se soldent pas des échecs, parce qu'il y a toujours des cas d'utilisation qu'on avait pas prévus...

  5. #5
    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
    oui c'est vrai, on aurait même pu dire qu'il n'y a pas de try/catch ...
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 57
    Par défaut
    Nan mais j'ai un minimum de base je vous ai mis une version hyper simplifié sans les try/catch les filtre ect. Ma question concernent surtout les déclarations.

    Comment je doit déclarer mes fonction / variable ect, pour pouvoir creer un Objet spécifique à chaque déclaration de type:

    Dim variable AS SQLOBJ

    J'ai essayer d'enlever les shared mais ca ne fonctionne pas.

    (Comment créé un nouveau type comme en c/cpp )

Discussions similaires

  1. [ASP.net, VS2008] débutant : Erreur Objet attendu
    Par betsprite dans le forum jQuery
    Réponses: 6
    Dernier message: 21/07/2010, 11h35
  2. [Débutant]Aide pour Configuration ASP.NET
    Par Vlatiska dans le forum ASP.NET
    Réponses: 6
    Dernier message: 15/03/2007, 13h34
  3. [débutant] Aide pour mettre une FOREIGN KEY sur une table
    Par cauldron dans le forum Langage SQL
    Réponses: 2
    Dernier message: 14/11/2004, 17h16
  4. [Débutant] Aide utilisation fonctions :(
    Par trakiss dans le forum Débuter
    Réponses: 10
    Dernier message: 27/08/2004, 15h59
  5. [Débutant] Quel objet dialogue choisir ???
    Par Walm dans le forum C++Builder
    Réponses: 4
    Dernier message: 09/01/2004, 14h40

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