Déploiment d'une application en VB.net avec une base de données sql

Signaler
Messages postés
7
Date d'inscription
samedi 8 septembre 2007
Statut
Membre
Dernière intervention
8 septembre 2009
-
cs_lilj
Messages postés
204
Date d'inscription
dimanche 13 décembre 2009
Statut
Membre
Dernière intervention
1 avril 2012
-
Bjr tt le monde,

je voudrais déployer une application en vb.net et une base de données sql, mais sans avoir sql server dans le poste du client, en plus, cette application sera installée sue un réseau.

Merci pour votre aide :)

14 réponses

Messages postés
2811
Date d'inscription
mardi 15 avril 2003
Statut
Membre
Dernière intervention
26 novembre 2013
26
Salut,

Avec SQL il y a 2 possibilités :

1ère : Tu utilise une base locale, ce qui implique que celle-ci doit être copié sur le poste client lors de l'installation, et que le composant SQL Compact devrat être inclus dans le projet d'installation. Ce qui rend le logiciel monoposte.

2ème : Tu utilise une chaîne de connexion pour te connecter à un serveur de bases de données SQL Server/SQL Server Express, ce qui implique que la base de données ne sera présent que sur le serveur et non en locale, celle-ci sera partagé entre les applications installés sur les postes clients (logiciel multiposte).

Si cette deuxième solution te conviens, regarde ma dernière source pour plus de détails, elle traite du sujet.

@+ Mayzz.

Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
Messages postés
7
Date d'inscription
samedi 8 septembre 2007
Statut
Membre
Dernière intervention
8 septembre 2009

Merci beaucoup mayzz, je vais voir ces 2 possibilités, et je vais vous répondre, merci
Messages postés
204
Date d'inscription
dimanche 13 décembre 2009
Statut
Membre
Dernière intervention
1 avril 2012
5
Bonjour,
je suis interssé par la 1ère possibilité mais je n'y connais pas grand chose quelqu'un pourrais m'aider ?
merci
Messages postés
2811
Date d'inscription
mardi 15 avril 2003
Statut
Membre
Dernière intervention
26 novembre 2013
26
Salut,

Voici des liens qui pourront t'aider

Ici et là.

Voila, Bon courage, @+

Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
Messages postés
204
Date d'inscription
dimanche 13 décembre 2009
Statut
Membre
Dernière intervention
1 avril 2012
5
merci à toi, je doutais que le sujet soit trop vieux pour espèrer une réponse.
merci encore !!
Messages postés
204
Date d'inscription
dimanche 13 décembre 2009
Statut
Membre
Dernière intervention
1 avril 2012
5


Je viens de lire les liens que tu m'as fournis. cependant, j'utilise le schéma :
BDD<-Connexion<-Commande
c'est à dire sans passer par les dataset et dataadapter. De plus, j'utilise des triggers et des procédures stockées du coup, cette solution n'est pas adapté n'est ce pas ?
Dans mon code j'ai :
Dim connexion As New SqlConnection("Data Source=(local)\SQLEXPRESS";Integrated Security=false;Initial Catalog=mabase;User ID=login;PWD=password")

Ensuite ceci pour les requêtes du type insert, update, delete :
 Dim add As SqlCommand = New SqlCommand(requete, connexion)
        Try
            add.ExecuteNonQuery()

        Catch msg As SqlException
            MsgBox(msg.Message, MsgBoxStyle.Exclamation + vbOKOnly, "Attention")
            Return False
            Exit Function
        End Try

et les select:
 Dim myreq As SqlCommand = New SqlCommand(requete, connexion)
        myreader = myreq.ExecuteReader()
        Return myreader
        myreader.Close()
Messages postés
2811
Date d'inscription
mardi 15 avril 2003
Statut
Membre
Dernière intervention
26 novembre 2013
26
Nan j'suis toujours là quand il s'agit de refiler un lien vers mon tuto sur les bases de données :p


Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
Messages postés
204
Date d'inscription
dimanche 13 décembre 2009
Statut
Membre
Dernière intervention
1 avril 2012
5
dsl pour message du dessus... il y a eut un petit soucis lors de l'envoi (il faudrait le supprimer)
Je viens de lire les liens que tu m'as fournis. cependant, j'utilise le schéma :
BDD<-Connexion<-Commande
c'est à dire sans passer par les dataset et dataadapter. De plus, j'utilise des triggers et des procédures stockées du coup, cette solution n'est pas adapté n'est ce pas ?
Dans mon code j'ai :
Dim connexion As New SqlConnection("Data Source=(local)\SQLEXPRESS;Integrated Security=false;Initial Catalog=mabase;User ID=login;PWD=password")

Ensuite ceci pour les requêtes du type insert, update, delete :
 Dim add As SqlCommand = New SqlCommand("insert into matable", connexion)
        Try
            add.ExecuteNonQuery()

        Catch msg As SqlException
            MsgBox(msg.Message, MsgBoxStyle.Exclamation + vbOKOnly, "Attention")
            Return False
            Exit Function
        End Try

et les select:
 Dim myreq As SqlCommand = New SqlCommand("select * from matable", connexion)
        myreader = myreq.ExecuteReader()
        Return myreader
        myreader.Close()

Rq: le fait d'utiliser un compte sql server n'est pas obligatoire.

Y-at-il une solution pour mon problème ?
Messages postés
2811
Date d'inscription
mardi 15 avril 2003
Statut
Membre
Dernière intervention
26 novembre 2013
26
Les assistants et fichiers d'automatation des requêtes de données (DataSet) utilisent ADO.Net pour l'accès au données.

Les assistants te permettent d'utiliser une procédure stocké sans problème, c'est même plus simple. Dans mon tuto je travaille avec une base SQL Server locale (SQLServerCE), du coup pas de gestion des déclancheurs ni de procédure stocké, mais ce n'est pas ton cas car tu utilise SQL Serveur (SQLClient).

Donc tu peux reprendre en partie mon tuto pour lier facilement tes contôles au données sans avoir à saisir une requête pour chaques contrôles.

Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
Messages postés
204
Date d'inscription
dimanche 13 décembre 2009
Statut
Membre
Dernière intervention
1 avril 2012
5
Je te comprends mais comme mon code est déjà prêt, il serait tout de même fastidieux de tout reprendre avec les objet ADO. Je chercherais une autre alternative alors. Merci à toi
Messages postés
2811
Date d'inscription
mardi 15 avril 2003
Statut
Membre
Dernière intervention
26 novembre 2013
26
En fait je n'ai pas bien saisi l'essence de ton problème ^^

Je me suis un peu perdu, donc si j'ai bien compris tu as développé un projet complet VB.NET + ADO.NET/SQLSERVER.

Tu souhaiterais pouvoir installer ton projet sur un réseau sans installer SQL Server ?

Bien en faite comme je l'ai dis plus haut deux soluces, soit la solution doit être multiposte et la aucune autre alternative mis à par installer un serveur(démon) de données (à part en coder un sois même => Bon courage XD). Car le programme à besoin d'un serveur pour fonctionner c'est logique.

Soit le projet à été conçu avec un serveur de connexion à distance comme SQL Server mais ne nécessite pas d'utilisation en réseau (la base sera toujours accessible sur le poste ou est installé le programme), dans ces cas là c'est une erreur stratégique de conception, l'outil employé n'est pas le bon et peut être substituer par un autre plus adapté, mais bon on ne fait pas d'omelette sans casser d'œufs et cela impliquera forcément des modifications.

Pour ton programme par exemple tu aurais pu remplacer les espace de nom "System.Data.SqlClient" par "System.Data.SqlServerCE".

Les classes de ces deux espaces de noms sont batis sur le même modèle, seul les fonctionnalités qui diffèrent obligent à des méthodes hors du modèle standard. Un exemple concret avec du code pour SQL Server :

Imports System.Data.SqlClient

Public Class Form1

    Private Sub Button_Read_Click() Handles Button1.Click

        'Chaine de connexion
        Dim ConnectionSrting As String = "Ma chaine de connexion"

        'Objet connexion (Instance de la classe SqlConnection)
        Dim Connection As New SqlConnection(ConnectionSrting)

        '-----------------------------------------------
        'Méthode en mode connecté
        '-----------------------------------------------

        'Requête SQL de sélection
        Dim CommandText As String = "SELECT * FROM Contacts"

        'Objet Command (Instance de la classe SqlConnection)
        Dim Command As New SqlCommand(CommandText, Connection)
        '
        Try
            '
            'Ouverture de la connexion
            Connection.Open()
            '
            'Objet MyDataReader (Instance de la classe SqlDataReader)
            Dim MyDataReader As SqlDataReader = Command.ExecuteReader

            While MyDataReader.Read
                'Lecture des enregistrements...
            End While
            '
        Catch ex As Exception
            '
            'Gestion des erreurs
            '
        Finally
            '
            'Fermeture de la connexion si ouverte
            If Connection.State <> ConnectionState.Closed Then
                Connection.Close()
            End If
            '
        End Try
        '
        '-----------------------------------------------
        'Méthode en mode déconnecté
        '-----------------------------------------------
        '
        Try
            'Objet MyDataAdapter (Instance de la classe SqlDataAdapter)
            Dim MyDataAdapter As New SqlDataAdapter(CommandText, Connection)
            '
            'Objet MyDataTable (Instance de la classe DataTable)
            Dim MyDataTable As New DataTable

            MyDataAdapter.Fill(MyDataTable)

            For Each Row As DataRow In MyDataTable.Rows
                'Lecture des données
            Next
        Catch ex As Exception
            '
            'Gestion des erreurs
            '
        End Try
        '
    End Sub
    '
End Class

Ici nous instancions les membres suivants :

SqlConnection
SqlCommand
SqlDataReader
SqlDataAdapter

Provenant tous de l'espace de noms importé :

System.Data.SqlClient

Donc si je souhaite convertir un projet d'un espace de noms vers un autre, il me suffit de remplacer l'espace de noms et de modifier le nom des membres comme suit (peut se faire grâce à la recherche=>remplacement) :

System.Data.SqlClient=>System.Data.SqlServerCe
SqlConnection => SqlCeConnection
SqlCommand => SqlCeCommand
SqlDataReader => SqlCeDataReader
SqlDataAdapter => SqlCeDataAdapter

Pour obtenir facilement et rapidement le code suivant :


Imports System.Data.SqlServerCe

Public Class Form1

    Private Sub Button_Read_Click() Handles Button1.Click

        'Chaine de connexion
        Dim ConnectionSrting As String = "Ma chaine de connexion"

        'Objet connexion (Instance de la classe SqlConnection)
        Dim Connection As New SqlCeConnection(ConnectionSrting)

        '-----------------------------------------------
        'Méthode en mode connecté
        '-----------------------------------------------

        'Requête SQL de sélection
        Dim CommandText As String = "SELECT * FROM Contacts"

        'Objet Command (Instance de la classe SqlConnection)
        Dim Command As New SqlCeCommand(CommandText, Connection)
        '
        Try
            '
            'Ouverture de la connexion
            Connection.Open()
            '
            'Objet MyDataReader (Instance de la classe SqlDataReader)
            Dim MyDataReader As SqlCeDataReader = Command.ExecuteReader

            While MyDataReader.Read
                'Lecture des enregistrements...
            End While
            '
        Catch ex As Exception
            '
            'Gestion des erreurs
            '
        Finally
            '
            'Fermeture de la connexion si ouverte
            If Connection.State <> ConnectionState.Closed Then
                Connection.Close()
            End If
            '
        End Try
        '
        '-----------------------------------------------
        'Méthode en mode déconnecté
        '-----------------------------------------------
        '
        Try
            'Objet MyDataAdapter (Instance de la classe SqlDataAdapter)
            Dim MyDataAdapter As New SqlCeDataAdapter(CommandText, Connection)
            '
            'Objet MyDataTable (Instance de la classe DataTable)
            Dim MyDataTable As New DataTable

            MyDataAdapter.Fill(MyDataTable)

            For Each Row As DataRow In MyDataTable.Rows
                'Lecture des données
            Next
        Catch ex As Exception
            '
            'Gestion des erreurs
            '
        End Try
        '
    End Sub
    '
End Class


La modification ne m'a pri que quelques secondes...

Et on aurait aussi bien pu adaper pour Oracle (OracleClient, OracleConnection, OracleDataReader...) ou MySQL (MySqlClient, MySqlConnection, MySqlDataReader...)

Même pour un projet complet c'est assez facile à mettre en place avec le remplacement automatique, ce pendant ton application utilise des fonctionnalités avancés comme les déclencheurs ou des procédures stockés, que SqlServerCe ne prend pas en charge, il te faudra donc trouver un fournisseur d'accès aux données .Net qui respecte le modèle d'ADO.Net.

Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.


Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
Messages postés
204
Date d'inscription
dimanche 13 décembre 2009
Statut
Membre
Dernière intervention
1 avril 2012
5
Je comprends. Concernant la procédure stockée ce n'est pas un souci en soi vu que je peux le transposer dans mon code.
Bref si je reprend ton raisonnement, mise à part le fait de faire les modifications , concernant la chaîne de connexion, je devrais la remplacer par quoi ? pour que mon application de connecte à la BDD crée grâce à ton tuto ?
Messages postés
2811
Date d'inscription
mardi 15 avril 2003
Statut
Membre
Dernière intervention
26 novembre 2013
26
Pour les chaines de connexion tu peux aller voir ici

C'est un site répertoriant les syntaxes des chaines de connexion.

De toutes façons, VB t'enregistre une chaine de connexion dans les paramètres d'application dès que tu ajoute une base sql server local à ton projet

Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
Messages postés
204
Date d'inscription
dimanche 13 décembre 2009
Statut
Membre
Dernière intervention
1 avril 2012
5
Avec ta méthode, est-il possible de gérer des comptes de connexion ?