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 :

Application de gestion d'une base de données SQL Express avec visual studio 2005


Sujet :

VB.NET

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 8
    Points : 2
    Points
    2
    Par défaut Application de gestion d'une base de données SQL Express avec visual studio 2005
    Bonjour à tous, je suis nouveau sur ce forum.
    Je viens ici pour la raison suivante :
    Je voudrai créer une application en relation avec une base de données, ou je pourrait par défaut les visualiser, et si nécessaire, supprimer ces données, les modifier et en ajouter.

    J'utilise Visual Studio 2005 en Francais, et pour ma base de données j'utilise SQL express qui est fourni avec visual studio 2005.
    Mon système d'exploitation est Windows VISTA.

    Voila je vous ai expliqué mon but, l'environnement dans lequel je travaille, et maintenant je vais énumérer ce que j'ai fait :

    1 : créationde l'application (avec clic droit ajouter nouvel élément au projet, puis base SQL)
    2 : création de la BDD, ainsi que sa table, et ses champs

    Voila ou j'en suis :
    3 : Voila donc j'ai créé dans ma fenetre principale un cham de saisie, et un bouton qui me permettra de faire tout ce que je foudrai faire au fur et a mesure.
    J'utilise le code suivant pour connaitre le nombre d'enregistrements dans ma table :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim test As Integer
            test = Databasentreprise.entreprise.Count()
            TextBox1.Text = test
    Etant donné que ma base est vide il em retourne 0 et je me dis c'est logique
    4 : je me dis c'est bon ca se connecte bien, donc voyons pour ajouter une ligne avec les données remplies, donc je mets le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Dim test As Integer
            test = Databasentreprise.entreprise.Count()
     
            TextBox3.Text = test
            test = test + 1
     
            Databasentreprise.entreprise.AddentrepriseRow(1, "saisie")
            Databasentreprise.entreprise.AcceptChanges()
    Mais quand je lance mon application et que j'effectuer ces 2 code précédents et que je quitte mon programme, et que je le relance la ase de données est a nouveau vierge.
    Pourriez vous m'aider à résoudre ce problème.

    Merci à vous pour votre aide.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Salut Balabap,

    Je ne sais pas du tout si je vais bien te renseigner, mais il faut peut-être que tu crées une connexion et que tu l'ouvres au moment où tu interagis avec ta base (sans oublier de la fermer ensuite).

    En ce qui me concerne, je n'ai pas fait comme ça pour insérer des données.

    J'ai d'abord créé un module dans lequel je mets juste cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Imports System.Data
    Imports System.Data.SqlClient
     
    Module SQLconnexion
        Public SqlConnection As SqlConnection
        Public ConnectionString As String = "Data Source=.\SQLEXPRESS;AttachDbFilename=D:\test\nomste.mdf;Integrated Security=True;User Instance=True"
        Public cnSQL = New SqlConnection(ConnectionString)
     
    End Module
    Ensuite, dans le code de mon formulaire, tout en haut, je mets :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Imports System
    Imports System.IO
    Imports System.Data
    Imports System.Data.SqlClient
    Imports Microsoft.VisualBasic
    (juste au dessus de Public Class)

    Puis avec le nom de la connexion (défini plus haut), que j'ai nommé cnSQL, tu fais, par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
            cnSQL.open()
     
            Dim strSQL As String = "INSERT INTO entreprise(NumEntreprise, NomEntreprise) VALUES(1,'saisie');"'Tu mets les champs dans lesquels tu veux effectuer l'insertion
            Dim cmSQL As New SqlCommand(strSQL, cnSQL)'Effectuer la commande qui exécute la requête sur la connexion
            cmSQL.ExecuteNonQuery()'Exécuter la requête
     
            cnSQL.close()
    Voilà, j'espère que ça va t'aider déjà

    Mais par contre, en ce qui me concerne, maintenant que j'ai terminé mon application ou presque, je cherche à la déployer sur d'autres ordinateurs et avec le chemin que j'ai défini en dur dans mon code plus haut (dans le module), ça risque de me poser quelques petits soucis. En effet, si le client n'a pas de disque D:, c'est un peu gênant. Il faudrait que je revois cela je pense...

    A + et bon courage en tout cas,

    Harry Potter

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    Ok j'ai compris ce que tu avais mis sauf quelques petits trucs, mais j'ai compris le principe.

    Ce que je n'ai pas compris :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public ConnectionString As String = "Data Source=.\SQLEXPRESS;AttachDbFilename=D:\test\nomste.mdf;Integrated Security=True;User Instance=True"
    dedans tu mets Integrated Security=True, et UserInstance=True
    Le 2eme je pense que c'est le fait qu'on autorise l'utilisateur a se connecter à la base, mais la 1ere concerne t'elle une base de données sécurisée?

    Et je trouve ta solution plus logique que de mettre des binding sources, et des dataSet.

    Je vais essayer ta solution et je te tiens au courant dans la journée j'espère.

    Merci à toi.

  4. #4
    Invité
    Invité(e)
    Par défaut
    De rien, Balabap... En espérant que ça va t'être utile.

    En fait, pour le code que tu ne comprends pas, c'est normal. Car je ne le comprends pas moi-même...

    Et c'est là dessus que je bloque actuellement. Je voudrai changer le chemin spécifié à cette ligne, pour pouvoir utiliser la base et l'application sur n'importe quel PC.

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    et la solution de connecter un lecteur réseau avec la lettre G sur tous tes postes par exemple qui pointe vers ton dossier qui partage?
    Et aussi dans SQL Express (enfin la version que j'ai avec visual studio 2005), dans la configuration de la surface d'exposition de SQL Server tu peux préciser que tu accepte aussi en TCP IP.

    A moins que tu ne veuille que ta base soit dupliquée sur tous tes postes.

    Mais si tu connecte tous tes postes à une même base de données, tu as l'option de créer un lecteur réseau mappé sur un dossier de partage de ton pc "maitre", et t'as juste cette ligne à modifier non????

  6. #6
    Invité
    Invité(e)
    Par défaut
    En fait, je ne souhaite pas faire un partage. Puisque ce sera pour mettre sur des PC Lambdas dont on ne connaît aucune configuration.

    On pourrait même admettre qu'ils n'ont pas de disque C:.

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    donc chacun des pc aura sa propre base de données?
    Si c'est que sur du windows, tu peu mettre %systemRoot% à la place de D par exemple non???

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

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Citation Envoyé par balabap Voir le message
    dedans tu mets Integrated Security=True, et UserInstance=True
    Integrated Security signifie que l'utilisateur est authentifié par la sécurité de windows; dans le cas contraire il faut gérer des utilisateurs au niveau de la base.

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  9. #9
    Invité
    Invité(e)
    Par défaut
    Salut Bluedeep, et merci pour l'info !!

    Citation Envoyé par balabap Voir le message
    donc chacun des pc aura sa propre base de données?
    Oui, tous les pc auront leur base de données. Et je ne sais pas encore si VB Express la créera automatiquement, ou il faut la copier en plus du fichier .exe.

    Citation Envoyé par balabap Voir le message
    Si c'est que sur du windows, tu peu mettre %systemRoot% à la place de D par exemple non???
    %systemRoot% ?? Je ne connaissais pas cela. Je peux toujours faire le test, merci...

  10. #10
    Invité
    Invité(e)
    Par défaut
    Testé et voilà le message qu'il me met lorsqu'il veut ouvrir la connexion (cnSQL.open()) :

    "Échec d'une tentative d'attachement d'une base de données nommée automatiquement pour le fichier %systemRoot%:\test\nomste.mdf. Il existe une base de données du même nom ou le fichier spécifié ne peut être ouvert ou il se trouve sur un partage UNC."

  11. #11
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par Harry_Potter Voir le message
    Salut Balabap,

    Je ne sais pas du tout si je vais bien te renseigner, mais il faut peut-être que tu crées une connexion et que tu l'ouvres au moment où tu interagis avec ta base (sans oublier de la fermer ensuite).

    En ce qui me concerne, je n'ai pas fait comme ça pour insérer des données.

    J'ai d'abord créé un module dans lequel je mets juste cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Imports System.Data
    Imports System.Data.SqlClient
     
    Module SQLconnexion
        Public SqlConnection As SqlConnection
        Public ConnectionString As String = "Data Source=.\SQLEXPRESS;AttachDbFilename=D:\test\nomste.mdf;Integrated Security=True;User Instance=True"
        Public cnSQL = New SqlConnection(ConnectionString)
     
    End Module
    Ensuite, dans le code de mon formulaire, tout en haut, je mets :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Imports System
    Imports System.IO
    Imports System.Data
    Imports System.Data.SqlClient
    Imports Microsoft.VisualBasic
    (juste au dessus de Public Class)

    Puis avec le nom de la connexion (défini plus haut), que j'ai nommé cnSQL, tu fais, par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
            cnSQL.open()
     
            Dim strSQL As String = "INSERT INTO entreprise(NumEntreprise, NomEntreprise) VALUES(1,'saisie');"'Tu mets les champs dans lesquels tu veux effectuer l'insertion
            Dim cmSQL As New SqlCommand(strSQL, cnSQL)'Effectuer la commande qui exécute la requête sur la connexion
            cmSQL.ExecuteNonQuery()'Exécuter la requête
     
            cnSQL.close()
    Voilà, j'espère que ça va t'aider déjà

    Mais par contre, en ce qui me concerne, maintenant que j'ai terminé mon application ou presque, je cherche à la déployer sur d'autres ordinateurs et avec le chemin que j'ai défini en dur dans mon code plus haut (dans le module), ça risque de me poser quelques petits soucis. En effet, si le client n'a pas de disque D:, c'est un peu gênant. Il faudrait que je revois cela je pense...

    A + et bon courage en tout cas,

    Harry Potter
    Voila j'ai essayé ton code, mais j'ai une question.
    QU'appel tu un formulaire? C'est le Form1 (en gros la fenetre?)
    Ensuite si cette réponse est positive, dans le Form1, j'ai un message d'erreur : concernant mon cnSQL qui me dis qu'ule déclaration est attendue
    et j'ai le code complet pour ma fenetre suivant :
    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
    Imports System
    Imports System.IO
    Imports System.Data
    Imports System.Data.SqlClient
    Imports Microsoft.VisualBasic
     
     
     
    Public Class Form1
     
        cnSQL.open()
     
        Dim strSQL As String = "INSERT INTO entreprise(NumEntreprise, NomEntreprise) VALUES(1,'saisie');" 'Tu mets les champs dans lesquels tu veux effectuer l'insertion
        Dim cmSQL As New SqlCommand(strSQL, cnSQL) 'Effectuer la commande qui exécute la requête sur la connexion
            cmSQL.ExecuteNonQuery()'Exécuter la requête
     
            cnSQL.close()
     
    End Class
    Peux tu me dire ce qui va pas.
    sinon pour créer le module, j'ai fait dans l'exploratuer de solutions, (a droite en haut), clic droit sur le nom de mon projet et ajouter un module, et copier coller le code.
    Dis moi si ce que j'ai fait est bon.
    Merci encore pour ton aide

  12. #12
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par Harry_Potter Voir le message
    Testé et voilà le message qu'il me met lorsqu'il veut ouvrir la connexion (cnSQL.open()) :

    "Échec d'une tentative d'attachement d'une base de données nommée automatiquement pour le fichier %systemRoot%:\test\nomste.mdf. Il existe une base de données du même nom ou le fichier spécifié ne peut être ouvert ou il se trouve sur un partage UNC."
    Mets plutot cela : %systemRoot%\test\nomste.mdf
    en fait si tu fais %SystemRoot% dans Démarrer Exécuter cela t'emmene dans C Windows, mais tu as d'autre raccourcis qui peuvent t'emmener à la racine de la ou tu te trouve.

    tu as toutes les infos ici : http://fr.wikipedia.org/wiki/%25SystemRoot%25
    et dans ton cas tu peux utiliser %SystemDrive%\test\nomste.mdf
    ce qui dans le cas ou Windows est installé dans C:\ t'amenera vers C:\test\nomste.mdf

    essaye avec cela je vois pas pourquoi il t'emmerderai, puisqu'il est censé comprendre. CE serait le comble que Microsoft ne comprenne pas le langage Microsoft....
    tiens moi au courant

  13. #13
    Invité
    Invité(e)
    Par défaut
    En fait, c'est bon à propos de cela, ça marche. J'ai réussi avec un DataDirectory. Mais y'a toujours un problème quand l'application est déployée sur d'autres PC. Ca viendrait je pense de librairies ou SQL Server, ou autres composants, qui manquent pour connecter l'application à la base de données correctement.

    Merci pour toutes les infos que tu m'as données en tout cas

    Sinon, ce que j'appelle le formulaire, c'est bien la fenêtre nommée ici Form1 (mauvais exemple de nom, il est vrai). Bravo à toi pour l'avoir trouvé.

    Et pour l'erreur de déclaration, j'ai l'impression que ça vient de la connexion qui a mal été instanciée, ou déclarée, ou je ne sais quoi.

    Tu peux me montrer le code de ton module ? Mais si c'est le même, ce doit pas être ça cependant...

  14. #14
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    En fait j'ai fait un copier coller de ton code avec la modif suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public ConnectionString As String = "Data Source=.\SQLEXPRESS;AttachDbFilename=D:\Documents\BDD\basentreprise.mdf;Integrated Security=True;User Instance=True"
    sachant que cette base je l'ai déplacée dans un dossier BDD alors qu'elle était à l'origine dans le dossier de mon projet.

    J'essayerai ce code dans la journée, ou ce Week end.

    je te tiendrai au courant de ce que j'ai trouvé.

    Sinon ce qu'on peut faire c'est que tu me mette un lien vers un fichier rar ou zip d'une application à toi qui écrit et ou lit une base de données, et ou on peut vérifier que ce qui a été rempli est a nouveau fonctionnel quand on relance l'application.

    Merci à toi.

    B@l@b@p

Discussions similaires

  1. [Débutant] Problème connexion Base de données SQL Server sur Visual studio
    Par Aiman.elmachi dans le forum VB.NET
    Réponses: 2
    Dernier message: 06/06/2014, 08h40
  2. Détachement d'une base de données SQL SERVER avec du code VB6
    Par seyiv dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 27/05/2009, 17h57
  3. Base de données et VB.net (visual studio 2005)
    Par ToolRun dans le forum VB.NET
    Réponses: 3
    Dernier message: 09/12/2008, 16h16
  4. Réponses: 1
    Dernier message: 19/07/2007, 21h09

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