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 :

[VB][SQL Server]Début difficiles


Sujet :

VB.NET

  1. #1
    Membre éclairé
    Inscrit en
    Janvier 2006
    Messages
    250
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Janvier 2006
    Messages : 250
    Par défaut [VB][SQL Server]Début difficiles
    Bonjour à tous ,

    Mes questions vont être 'débiles' pour certains mais j'ai parcourus par mal de forum tuto ou autre et rien n'éclaire ma lanterne :

    Je me lance dans VB (Visual basic 2008) et (MSSQL server) , a ce jour j'ai déployer une base MSSQL en locale mais qui va migré vers un serveur (local), et par la suite sur une VM.

    Mon application (Gestionnaire d'immobilisation technologique) est déstinée a plusieurs profil différents donc pour me connecter je fait un formulaire avec les champs suivants :
    Nom , Mot de passe , Serveur , Nom de la base (facultatif)

    Pour le moment j'ai fait ceci :

    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
     Private Sub GPI_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
     
     
            Me.txt_UserName.Text = "User"
            Me.txt_Password.Text = "Test12/"
            Me.txt_BaseServerName.Text = "UserTest\SQLEXPRESS"
            Me.txt_BaseName.Text = "GPI"
        End Sub
     
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
     
            Dim maCnx As New ADODB.Connection()
            Dim maCmd As New Command
     
            ' Variables de connection
            Dim ConnectionString As String
            Dim ActiveConnection As String
     
            Dim Password As String
            Dim User As String
            Dim Database As String
            Dim Server As String
     
            Password = Me.txt_Password.Text
            User = Me.txt_UserName.Text
            Database = Me.txt_BaseName.Text
            Server = Me.txt_BaseServerName.Text
     
     
            With maCnx
                On Error GoTo ErreurFatale
                .ConnectionTimeout = 30
                .Provider = "SQLOLEDB"
                .ConnectionString = "Trusted_Connection=yes;" & _
                                    "Data source = " & Server & ";" & _
                                    "Initial catalog = " & Database & ";"
                '"User ID = " & User & ";" & _
                .Open()
            End With
     
    ErreurFatale:
            MsgBox("Erreur N° :" & Err.Number & vbLf & Err.Description)
            End
        End Sub
    1.Seulement je ne n'arrive pas à me connecter à la base il me retourne l'erreur 0 mais avec aucun message d'erreur (juste Erreur : 0 ).

    2.Au cas ou ma connexion serai active comment faire pour afficher un message box du type :

    If connexion = true then
    msgbox('Connecté')
    End if

    Je me remet donc à vos lumières pour éclairer ce premier obstacle .
    Merci pour tout

  2. #2
    Membre émérite
    Inscrit en
    Août 2006
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Août 2006
    Messages : 550
    Par défaut
    Bonjour,

    Je te conseille d'utiliser la bibliotheque SqlClient pour SqlServer plutôt que OleDB.

    Dans ta chaine de connexion tu n'indques pas les informations userid et password pour accéder à la base de données.

    Si ta base de données permet de se connecter en mode mixte (c'est à dire via les identifiants sql -userid, password - et via la securité intégré windows), tu peux te connecter sans renseigner les identifiants sql.
    Je suppose que c'est ce que tu voulais faire... donc vérifie que ta base de donnée le permet.

    Si ça ne fonctionne pas, tu peux toujours essayer de remplacer "TrustedConnection=yes" par "Integrated Security=SSPI"

  3. #3
    Membre émérite
    Inscrit en
    Août 2006
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Août 2006
    Messages : 550
    Par défaut
    Désolé, j'ai lu en diagonale ton post et je me rends compte que j'ai pas vraiment répondu à ton problème...
    En ce qui concerne SqlClient, ça tient toujours, je te conseille d'utiliser cette bibliothèque.
    Apparement, ta connexion s'effectue correctement.
    Le message d'erreur vient du fait qu'il n'y a pas de rupture avant ErreurFatale:
    D'ailleurs, je te conseille l'utilisation des blocs Try Catch pour gérer ce genre d'exception
    Code vb.net : 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
     
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
     
        Dim maCnx As New ADODB.Connection()
        Dim maCmd As New Command
     
        ' Variables de connection
        Dim ConnectionString As String
        Dim ActiveConnection As String
     
        Dim Password As String
        Dim User As String
        Dim Database As String
        Dim Server As String
        Try 
            Password = Me.txt_Password.Text
            User = Me.txt_UserName.Text
            Database = Me.txt_BaseName.Text
            Server = Me.txt_BaseServerName.Text
     
            With maCnx
                On Error GoTo ErreurFatale
                .ConnectionTimeout = 30
                .Provider = "SQLOLEDB"
                .ConnectionString = "Trusted_Connection=yes;" & _
                                    "Data source = " & Server & ";" & _
                                    "Initial catalog = " & Database & ";"
                '"User ID = " & User & ";" & _
                ' Ajout d'un Try Catch pour tester l'ouverture de la connexion
                 Try
                    .Open()
     
                    ' Si j'arrive ici, je suis connecté
                    Bln_Connect = True
     
                 Catch ex_Open As Exception
                    ' Ici je ne suis pas connecté
                    Bln_Connect = False
     
                    ' Renvoi l'exception
                    Throw
                 End Try
            End With
     
        Catch ex As Exception
            ' Affichage du message d'exception
            MsgBox(ex.ToString)
        End Try
    End Sub

  4. #4
    Membre éclairé
    Inscrit en
    Janvier 2006
    Messages
    250
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Janvier 2006
    Messages : 250
    Par défaut
    Merci pour ta réponse je me replonge dedans demain matin ... En attendant merci pour tes conseils.

  5. #5
    Membre éclairé
    Inscrit en
    Janvier 2006
    Messages
    250
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Janvier 2006
    Messages : 250
    Par défaut
    Merci pour la fonction Try Catch que je ne connais pas encore, en ce qui concerne le provider SQL Client tu parles de ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SQL Native Client ODBC Driver
    Standard security
     
    Driver={SQL Native Client};Server=myServerAddress;Database=myDataBase;Uid=myUsername;Pwd=myPassword;
    Are you using SQL Server 2005 Express? Don't miss the server name syntax Servername\SQLEXPRESS where you substitute Servername with the name of the computer where the SQL Server 2005 Express installation resides.
    Soucre : http://www.connectionstrings.com/?carrier=sqlserver2005

  6. #6
    Membre émérite
    Inscrit en
    Août 2006
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Août 2006
    Messages : 550
    Par défaut
    Je parle juste des objets de gestion de données

    Ici tu utilises les objets ADO :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim maCnx As New ADODB.Connection()
    Dim maCmd As New Command
    


    Mon conseil était utilise des objets SqlClient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim maCnx As New SqlClient.SqlConnection()
    Dim maCmd As New SqlClient.SqlCommand
    


    Tu peux faire une recherche sur le net pour connaitre les différences entre ADODB et SqlClient

  7. #7
    Membre éclairé
    Inscrit en
    Janvier 2006
    Messages
    250
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Janvier 2006
    Messages : 250
    Par défaut
    Re,

    Suite à ton conseil j'ai regarder la différence entre ADODB et SqlClient, sans te mentir j'ai encore pas mal de mal à comprendre, a force je m'en sortirai mieux.

    J'ai essayer de suivre ton conseil est voici ce que j'en ressort :
    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
      Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
     
            Dim maCnx As New SqlClient.SqlConnection()
            Dim maCmd As New SqlClient.SqlCommand
     
            ' Variables de connection
            'Dim ConnectionString As String
            'Dim ActiveConnection As String
            Dim Bln_Connect as Boolean 
     
            Dim Password As String
            Dim User As String
            Dim Database As String
            Dim Server As String
            Try
     
                If Me.txt_Password.Text = "" Then
                    MsgBox("Veuillez renseigner le champs 'Mot de passe'")
                    End
                Else : Password = Me.txt_Password.Text
                End If
     
                If Me.txt_UserName.Text = "" Then
                    MsgBox("Veuillez renseigner le champs 'Nom utilisateur'")
                    End
                Else : User = Me.txt_UserName.Text
                End If
     
                If Me.txt_BaseName.Text = "" Then
                    MsgBox("Veuillez renseigner le champs 'Nom de la Base de donnée'")
                    End
                Else : Database = Me.txt_BaseName.Text
                End If
     
                If Me.txt_BaseServerName.Text = "" Then
                    MsgBox("Veuillez renseigner le champs 'Nom du serveur '")
                    End
                Else : Server = Me.txt_BaseServerName.Text
                End If
     
     
     
                With maCnx
                    '.ConnectionTimeout = 30
                    '.Provider = "SQL Native Client"
                    .ConnectionString = "Trusted_Connection = False;" & _
                                        "Server   = " & Server & ";" & _
                                        "Database = " & Database & ";" & _
                                        "Uid      = " & User & ";" & _
                                        "Pwd      =" & Password & ";"
                    ' Ajout d'un Try Catch pour tester l'ouverture de la connexion
                    Try
                        .Open()
     
                        ' Si j'arrive ici, je suis connecté
                        Bln_Connect = True
                        MsgBox("La connexion est ok")
                        Me.sts_Connection.Visible = True
                        Me.sts_Connection.Text = "Connecté"
     
                    Catch ex_Open As Exception
                        ' Ici je ne suis pas connecté
                        Bln_Connect = False
     
                        ' Renvoi l'exception
                        Throw
                    End Try
                End With
     
            Catch ex As Exception
                ' Affichage du message d'exception
                MsgBox(ex.ToString)
                Me.sts_Connection.Visible = True
                Me.sts_Connection.Text = "Déconnecté"
            End Try
        End Sub
    Toutefois il me retourne une erreur et ne me connecte plus.
    Peut être que ton œil guéri verra une faute grosse comme moi ...

    En passant j'ai modifier l'authentification qui ne ne fait plus via Windows mais belle et bien par SQL (j'ai créer l'utilisateur Test ) avec le mot de passe Test/12, l'erreur semble porter sur l'authentification :

    Lors de la compilation :
    Une exception de première chance de type 'System.Data.SqlClient.SqlException' s'est produite dans System.Data.dll
    Une exception de première chance de type 'System.Data.SqlClient.SqlException' s'est produite dans GPI.exe

    Merci encore
    (Si j'avais dût offrir une bouteille à chaque fois que j'ai dit merci sur ce site j'aurais ouvert une cave !!!)

  8. #8
    Membre émérite
    Inscrit en
    Août 2006
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Août 2006
    Messages : 550
    Par défaut
    A priori l'authentification avec l'user Test n'est pas valide.

    Vérifie bien les autorisations au niveau de l'utilisateur que tu as créé...
    Arrives-tu à ouvrir l'intégré SQL Management Studio avec ces identifiants ?

    Sinon le mot clé UId n'est pas indiqué dans la doc en ce qui concerne la ConnectionString, mais apparement il est traité quand même.

  9. #9
    Membre éclairé
    Inscrit en
    Janvier 2006
    Messages
    250
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Janvier 2006
    Messages : 250
    Par défaut
    J'ai trouvé mon erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     With maCnx
                    .ConnectionString = "Integrated Security=SSPI;" & _
                                        "Persist Security Info=False;" & _
                                        "User ID=" & User & ";" & _
                                        "Initial Catalog=" & Database & ";" & _
                                        "Data Source=" & Server & ";"
                    ' Ajout d'un Try Catch pour tester l'ouverture de la connexion.......
    J'ai quand même les deux 'avertissement' lors de la compilation..

    Merci pour tout!!!!!!!

  10. #10
    Membre émérite
    Inscrit en
    Août 2006
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Août 2006
    Messages : 550
    Par défaut
    Sinon, en passant ...


    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
     
    Try
        .Open()
      ' Si j'arrive ici, je suis connecté
        Bln_Connect = True
     
        ' Si il y a une exception provoqué dans la partie qui suit, 
        ' tu risques de lever l'exception et indiquer que la connexion n'est pas ouverte, 
        ' alors que ce n'est pas le cas
     
        MsgBox("La connexion est ok")
        Me.sts_Connection.Visible = True
        Me.sts_Connection.Text = "Connecté"
     
     
    Catch ex_Open As Exception
        ' Ici je ne suis pas connecté
        Bln_Connect = False
     
        ' Renvoi l'exception
        Throw
    End Try
    Je t'avais indiqué un boolean pour exemple, mais ce n'est pas la meilleure solution.

    Je te conseille de créer une classe pour la connexion et les informations de connexion.
    Voici un début d'exemple que tu peux améliorer....

    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
     
    Public Class MaConnexion
     
    Private m_stsConnection As Label ' C'est un Label je suppose
    Private mStr_ConnectionString As String 
     
    '*** Constructeur
    Public Sub New( _
        ByVal Str_ConnectionString As String, _
        ByVal stsConnection As Label _
    )
        m_sqlConnection = New SqlConnection(Str_ConnectionString)
        m_stsConnection = stsConnection
    End Sub
     
    '*** Renvoi le status de la connexion
    Public ReadOnly Property State() As System.Data.ConnectionState
    Get
        State = m_SqlConnection.State
    End Get
    End Property
     
    '*** Ouverture de la connexion
    Public Sub Open()
        ' Si la connection est fermé, on ouvre la connection
        If m_SqlConnection.State = ConnectionState.Closed Then
            ' Ouverture de la connection 
            m_SqlConnection.Open()
        End If
    End Sub
     
    '*** Fermeture de la connection
    Public Sub Close()
     
     
    ' Si la connection est ouverte, on ferme la connection
     
        If m_SqlConnection.State <> ConnectionState.Closed Then
     
            ' Fermeture de la connection
            m_SqlConnection.Close()
        End If
    End Sub
     
    Private Sub m_SqlConnection_StateChange( _
        ByVal sender As Object, _
        ByVal e As System.Data.StateChangeEventArgs _
    ) Handles _
        m_SqlConnection.StateChange
     
        Try
            Select Case e.CurrentState
            Case ConnectionState.Closed
                m_stsConnection.Text = "Déconnecté"
            Case ConnectionState.Open
                m_stsConnection.Text = "Connecté"
            '....
            End Select
     
        Catch ex As Exception
            ' Gestion des exceptions
            Messages.AfficherException(ex.ToString)
        End Try
    End Sub
     
    End Class

  11. #11
    Membre éclairé
    Inscrit en
    Janvier 2006
    Messages
    250
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Janvier 2006
    Messages : 250
    Par défaut
    Merci pour tes conseils mais je n'ai pas encore les connaissances suffisante pour développer comme tu le fait.
    La je vais essayer de découvrir comment on affiche des tables, comment on peut faire des formulaires de recherche en imbriquant des requêtes SQL, faire la modification des données avec gestion des erreurs (bref tout ce qui était en place dans ma version en access qui est finalisée mais qui ne convient plus).

    Et je trouve qu'il y à peu de ressources sur le web (tutos) exemple de programmation . J'ai suivit les formations mis en place par Wind mais réalisé une application de manière graphique me laisse un peu perplexe alors je prend par les bases de VB...

    Encore une chose :
    Question idiote : En quoi je code la ?
    VB
    .NET
    ....
    Il y à trop de standard je suis un peu perdu ...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Pb migration Access / SQL server
    Par yoyo dans le forum MS SQL Server
    Réponses: 10
    Dernier message: 25/04/2005, 10h39
  2. Quel outil choisir pour un développement SQL-Server ?
    Par Mouse dans le forum Débats sur le développement - Le Best Of
    Réponses: 23
    Dernier message: 12/08/2003, 06h23
  3. [Kylix] sql server & kylix
    Par fehmitn dans le forum EDI
    Réponses: 1
    Dernier message: 23/08/2002, 19h44
  4. Backup BD SQL Server
    Par Ethmane dans le forum Administration
    Réponses: 3
    Dernier message: 07/06/2002, 00h42

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