none
DB et serveur SQL RRS feed

  • Question

  • Bonjour,

    Actuellement je réalise un projet qui devrait contenir une base de donnée Microsoft® SQL Server® Compactsql server

    J'ai donc créer cette base de donnée, je l'ai également rajouter à mon projet et visual studio ma donc mis les fichiers suivant:

    • Le nom de ma DB.sdf
    • Le nom de ma DBDataSet.xsd

    Mais les tables que j'avais créées ne sont pas dans ces fichiers et je ne les trouves pas.

    Seriez-vous m'aider?

    J'ai aussi un souci avec la connexion à ma DB.

    J'ai mis cette ligne de commande pour me connecter à ma DB:

    SqlConnection con = new SqlConnection("Database=DB_Restaurant;Server=Germain"); con.Open();

    Pour ce que j'ai compris, visual studio a créer automatiquement un serveur sur mon pc avec mon "pseudo" de ma session?

    ici le serveur doit être: Germain

    "dsl je n'ai pas le droit de mettre d'images"

    Voila tout ce que je dispose sur mon projet.

    Je lance donc mon projet et sur la form ou j'ai mis la ligne de commande pour me connecter à ma DB j'ai cette erreur:

    "dsl je n'ai pas le droit de mettre d'images"

    Une erreur liée au réseau ou spécifique à l'instance s'est produite lors de l'établissement d'une connexion à SQL Server. Le serveur est introuvable ou n'est pas accessible. Vérifiez que le nom de l'instance est correct et que SQL Server est configuré pour autoriser les connexions distantes. (provider: Named Pipes Provider, error: 40 - Impossible d'ouvrir une connexion à SQL Server)

    Je vous remercie d'avance pour votre aide :)

    Stiens Germain

    samedi 5 octobre 2013 08:46

Réponses

  • Pouvez-vous nous montrer votre code?

    Ajoutez un Try/Catch de type

    try{

    conn.Open();

    }

    catch(Exception ex)

    {

    MessageBox.Show("Erreur" + ex.Message);

    }

    Cordialement,


    Aurel BERA, MSFT
    MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
    S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.

    • Marqué comme réponse Digitalismi mercredi 9 octobre 2013 09:30
    mercredi 9 octobre 2013 09:23
  • Bonjour,

    Oui.

    Dans ce cas voilà comment bien traiter les erreurs au niveau connexion et au niveau commande :

    SqlCeConnection conn = null;
    conn = new SqlCeConnection("Data Source = recup_donnee.sdf");
    
    try
    {
        try
        {
            conn.Open();
            MessageBox.Show("OK connecter");
    
            try
            {
                // Executer la commande SQL
            }
            catch (SqlCeException ex)
            {
                MessageBox.Show("Erreur de commande SQL" + ex.Message);
                return;
            }
        }
        catch (SqlCeException ex)
        {
            MessageBox.Show("Erreur de connexion" + ex.Message);
            return;
        }
    }
    finally
    {
        conn.Close();
    }

    Eviter d'utiliser le catch(Exception) qui récolte toutes les exceptions même celles qui sont intraitables... Ici on utilise le catch(SqlException) pour récupérer les erreurs au niveau SQL CE.

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte logiciel/Consultant/Formateur Freelance
    Blog : http://gilles.tourreau.fr
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5/4.0
    - MCITP : SQL Server 2008 Developper
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5/4.0

    mercredi 9 octobre 2013 21:41
    Modérateur

Toutes les réponses

  • Bonjour,

    Mais les tables que j'avais créées ne sont pas dans ces fichiers et je ne les trouves pas.
    Que voulez vous dire exactement ? Avez vous ouvert votre base de données avec Visual Studio pour vérifier que les tables existent bien ?

    Si vous utilisez SQL Server Compact Edition, il faut utiliser la classe SqlCeConnection et non SqlConnection (cette dernière est destinée pour se connecter à un serveur de base de données SQL Server). Pour savoir la chaîne de connexion à utiliser pour SqlCeConnection, regardez le site suivant : http://www.connectionstrings.com/sql-server-compact/

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte logiciel/Consultant/Formateur Freelance
    Blog : http://gilles.tourreau.fr
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5/4.0
    - MCITP : SQL Server 2008 Developper
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5/4.0

    samedi 5 octobre 2013 22:20
    Modérateur
  • Bonjour

    Un petit retour SVP?

    Merci!

    Cordialement,


    Aurel BERA, MSFT
    MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
    S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.

    lundi 7 octobre 2013 09:04
  • Bonjour,

    UN grand merci pour votre réponse et vous venez de me faire remarquer que j'étais à côté de la plaque :/

    Pour mon projet j'aurai besoin d'une base de donnée pour gérer des entrées, plats, dessert et boissons.

    Donc la je pense créer ma base de donnée sur sql server 2008 pour gérer cela.

    Pensez vous que cela me suffira?

    Encore merci


    lundi 7 octobre 2013 09:54
  • Sans doute SQL Server 2008 fera le travail.

    Le problème c'est qu'en 2014 le support pour SQL 2008 sera fini, donc mon conseil c'est de commencer à développer avec une autre version SQL, même SQL Express (gratuit).
    http://support.microsoft.com/lifecycle/search/?sort=PN&alpha=SQL

    Comme ça, vous éliminez une soucie (petite) de passer de SQL 2008 vers une autre version de SQL.

    Cordialement,


    Aurel BERA, MSFT
    MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
    S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.

    lundi 7 octobre 2013 11:08
  • Ah oui effectivement :/

    j'aimerais bien utiliser le service de base de donnée que propose visual stuido mais quand je réalise mes tables tout est ok.

    Je vois bien que dans ma base de donnée ma table de donnée est bien la, mais dans mon programme il y a donc bien la DB mais pas les tables les tables sont introuvables.

    Ce qui serai bien c'est d'avoir donc une base de donnée en local et de pouvoir travailler avec.

    Mais apparemment je n'ai pas très bien compris le système :s

    J'ai pourtant bien suivi les explications sur msdn


    lundi 7 octobre 2013 15:53
  • Bonjour,

    Je vois bien que dans ma base de donnée ma table de donnée est bien la, mais dans mon programme il y a donc bien la DB mais pas les tables les tables sont introuvables.
    Comment constatez vous que les tables sont introuvables ? Quel chaîne de connexion utilisez vous pour vous connectez à la base de données ?

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte logiciel/Consultant/Formateur Freelance
    Blog : http://gilles.tourreau.fr
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5/4.0
    - MCITP : SQL Server 2008 Developper
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5/4.0

    lundi 7 octobre 2013 18:26
    Modérateur
  • je pense que je me suis mal fait comprendre pour expliquer mon problème, mais ce n'est pas grave je l'ai résolu.

    DOnc maintenant j'ai bien ma base de donnée et mes tables de données affichées dans mon projet.

    En tout cas un très grand merci pour tous les partages que vous m'aviez fourni :)

    Maintenant j'ai donc ma base de donnée qui est en .sdf elle contient des tables avec des colonnes et du contenu.

    Est ce que cette sorte de base de donnée peut être assez facilement maniable pour une gestion dans mon programme?

    JE veux dire par la que je pourrai la lire et l'affichée dans une listebox sans problème ou même affiché une table de donnée dans une datagridview et que l'utilisateur puisse la modifiée directement par la datagridview?

    Je vous remercie

    Germain

    mardi 8 octobre 2013 16:29
  • Avec la datagridview j'aimerai ajouter et modifier ma base de donnée
    mardi 8 octobre 2013 16:43
  • Me re voila :)

    Voici mon code pour me connecter à ma DB:

              SqlConnection con = new SqlConnection("Database=recup_donnees;Server=???;uid=Germain;pwq=???");
    
              try
              {
                  con.Open();
              }

    Et je suis entrain de me demander si je ne me trompe pas dans le nom du serveur et ou j'ai mis les "???" c'est ou je ne suis pas certain

    pour le server je dois mettre quoi? parceque bon je n'ai pas du choisir de server ( pour moi ce serait localhost).

    ensuite pour le mdp ce serait mes identifiant de ma session?

    Cordialement

    mardi 8 octobre 2013 19:19
  • Bonjour,

    Pour le serveur il faut mettre LOCALHOST ou LOCALHOST\SQLEXPRESS si vous avez installé une version de SQL Server Express avec les paramétrages par défaut.

    Pour le login/mot de passe de l'utilisateur si vous utilisez l'authentification Windows et donc votre login/mp en cours, il suffit de spécifier la chaîne de connexion suivante :

    "Database=recup_donnes;Server=xxxxxxx;Integrated Security=True"

    Et c'est tout...

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte logiciel/Consultant/Formateur Freelance
    Blog : http://gilles.tourreau.fr
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5/4.0
    - MCITP : SQL Server 2008 Developper
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5/4.0

    mardi 8 octobre 2013 21:54
    Modérateur
  • Bonjour,Je n'ai pas installé d sql server.J'ai suivi ce que vous m'aviez dit.

    Les infos de ma DB sont les suivant:

    Fournisseur: Fournisseur de données .NET Framework pour Microsoft SQL Server Compact 4.0

    TYpe: Microsoft® SQL Server® Compact

    Version: 4.0.8876.1

    Voila et la je pense que je dois utiliser une autre ligne de commande pour me connecter à ma DB non?

    " je ne trouve pas grand chose sur le web "

    mercredi 9 octobre 2013 07:49
  • Bonjour

    Pour SQL CE vous devez utiliser SqlCeConnection et SqlCeCommand.

    Ici vous avez un exemple pour le String de connexion :

    http://www.connectionstrings.com/sql-server-compact/

    Cordialement,


    Aurel BERA, MSFT
    MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
    S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.

    mercredi 9 octobre 2013 08:02
  • Merci :)

    votre lien m'aide assez bien.

    au moment d'ouvrir ma DB j'ai cette erreur :

    Une exception non gérée du type 'System.Data.SqlServerCe.SqlCeException' s'est produite dans System.Data.SqlServerCe.dll

    j'ai été sur http://msdn.microsoft.com/fr-fr/library/system.data.sqlserverce.sqlceconnection.connectionstring%28v=vs.100%29.aspx

    mais je ne comprends pas vraiment bien

    mercredi 9 octobre 2013 08:53
  • Pouvez-vous nous montrer votre code?

    Ajoutez un Try/Catch de type

    try{

    conn.Open();

    }

    catch(Exception ex)

    {

    MessageBox.Show("Erreur" + ex.Message);

    }

    Cordialement,


    Aurel BERA, MSFT
    MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
    S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.

    • Marqué comme réponse Digitalismi mercredi 9 octobre 2013 09:30
    mercredi 9 octobre 2013 09:23
  • voila super je vous remercie tout fonctionne je suis super content " oui je n'ai pas besoin de grand chose ^^"

    voila mon code si ça peu aider quelqu'un :) :

                SqlCeConnection conn = null;
    
                try
                {
                    conn = new SqlCeConnection("Data Source = recup_donnee.sdf");
                    conn.Open();
                }
                finally
                {
                    conn.Close();
                }

    Je vous remercie encore :)

    Germain

    mercredi 9 octobre 2013 09:30
  • Pas bon.

    Comme vous avez caché l'exception, mais il y a la chance que la connexion n'est pas toujours ouvert (ajoutez le catch).

    Essayez de lire la doc sur Try/Catch, ça vous sera utile dans l’avenir aussi.

    Un tel try/catch qui cache une exception peut vous faire perdre des heures devant l’ordinateur pour trouver pourquoi il ne marche pas.

    Cordialement,


    Aurel BERA, MSFT
    MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
    S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.

    mercredi 9 octobre 2013 09:37
  •         private void connecter_Click(object sender, EventArgs e)
            {
                SqlCeConnection conn = null;
                try
                {
                    conn = new SqlCeConnection("Data Source = recup_donnee.sdf");
                    conn.Open();
    
                    MessageBox.Show("OK connecter");
                }
                finally
                {
                    conn.Close();
                }
    
            }

    j'ai mis cette condition dans un bouton et il m affiche "ok connecter" c'est bon non?

    Je vais mettre le try/catch et je vous tiens au courant

    mercredi 9 octobre 2013 12:03
  • Si la fenêtre avec "OK connecter" s'affiche, la connexion est ouverte.

    Sinon une exception est apparue, et la connexion n’est pas ouverte.

    Dans votre cas vous affichez un message si la connexion est OK.

    D’habitude on préfère d’afficher un message d’erreur si on a une erreur a l’ouverture de la connexion.

    Dans ce cas, le code sera :

    private void connecter_Click(object sender, EventArgs e)
            {
                SqlCeConnection conn = null;
                try
                {
                    conn = new SqlCeConnection("Data Source = recup_donnee.sdf");
                    conn.Open();
                    MessageBox.Show("OK connecter");
                }
                   catch(Exception ex)
                   {
                           MessageBox.Show("Erreur de connexion" + ex.Message);
                   }
                finally
                {
                    conn.Close();
                }
    
    
            }

    En plus, vous ouvrez une connexion et la fermez tout de suite.

    Normalement, entre Open et Close on doit exécuter une commande.

    Cordialement,


    Aurel BERA, MSFT
    MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
    S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.

    mercredi 9 octobre 2013 12:21
  • d'accord donc quand je demanderai de faire une commande il y a donc risque d'erreur et le try/catch  m'indiquera donc "

    "Erreur de connexion + un message que j'aurai mis bien entendu"Je vais exécuter une commande pour être certain.

    mercredi 9 octobre 2013 12:30
  • Bonjour,

    Oui.

    Dans ce cas voilà comment bien traiter les erreurs au niveau connexion et au niveau commande :

    SqlCeConnection conn = null;
    conn = new SqlCeConnection("Data Source = recup_donnee.sdf");
    
    try
    {
        try
        {
            conn.Open();
            MessageBox.Show("OK connecter");
    
            try
            {
                // Executer la commande SQL
            }
            catch (SqlCeException ex)
            {
                MessageBox.Show("Erreur de commande SQL" + ex.Message);
                return;
            }
        }
        catch (SqlCeException ex)
        {
            MessageBox.Show("Erreur de connexion" + ex.Message);
            return;
        }
    }
    finally
    {
        conn.Close();
    }

    Eviter d'utiliser le catch(Exception) qui récolte toutes les exceptions même celles qui sont intraitables... Ici on utilise le catch(SqlException) pour récupérer les erreurs au niveau SQL CE.

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte logiciel/Consultant/Formateur Freelance
    Blog : http://gilles.tourreau.fr
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5/4.0
    - MCITP : SQL Server 2008 Developper
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5/4.0

    mercredi 9 octobre 2013 21:41
    Modérateur
  • Un grand merci pour votre aide :)
    lundi 14 octobre 2013 15:58