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

C# Discussion :

C# et SQL Compact, comment travailler avec les deux


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    34
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 34
    Par défaut C# et SQL Compact, comment travailler avec les deux
    Bonjour,

    Je doit faire une petite application. Je ne pense pas qu'installé un serveur sql soit pertinant pour le projet donc j'ai regarder du coté de sql compact.

    J'aime le concept, mais j'ai des soucis. J'ai visual studio 2008 sp1. j'ai crée un projet windows_form, ensuite ajouter un composant "base de données locale". Il me crée donc 2 fichiers,
    un sdf (la base de donnée local sql compact) et un .xsd qui semble etre le designer.

    J'ai donc crée l'architeture de mes tables, ensuite dans une form je crée un "DataGridView" et ensuite je le lie avec le .xsd sur la table. Tout se passe bien dans le meilleur des mondes.

    Maintenant je voudrai faire un insert... Je fait comment? je suis perdu avec ces deux fichiers. Il faut refaire les tables dans le .sdf à la main? et ensuite faire un insert comme j'en trouve sur le net. Dans ce cas il se passe quoi pour le dataview? il serra mis a jour? Les infos sont dans le sdf?

    Merci de votre attention, et dsl je débute un peu en C#.

  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
    Le xsd est la définition d'un DataSet, c'est à dire une copie en mémoire de tout ou partie de la base de données. Pour modifier les données d'une table de la base, tu modifies en fait la DataTable correspondante dans le DataSet, et tu appelles la méthode Update du TableAdapter (normalement généré aussi par le designer), qui se chargera d'exécuter les commandes SQL nécessaires (INSERT/UPDATE/DELETE).

    Pour plus d'infos sur les DataSets et DataAdapters, regarde ce tutoriel

    Après, rien ne t'oblige à utiliser un DataSet, tu peux tout à fait supprimer le XSD et choisir une autre option :
    - exécution "manuelle" de requêtes SQL sur la base (cf. ce tuto
    - Linq to SQL
    - Entity Framework (tuto)
    - un autre ORM (NHibernate par exemple) ou un système de génération de DAL (Subsonic par exemple)

  3. #3
    Membre averti
    Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    34
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 34
    Par défaut
    Citation Envoyé par tomlev Voir le message
    Le xsd est la définition d'un DataSet, c'est à dire une copie en mémoire de tout ou partie de la base de données. Pour modifier les données d'une table de la base, tu modifies en fait la DataTable correspondante dans le DataSet, et tu appelles la méthode Update du TableAdapter (normalement généré aussi par le designer), qui se chargera d'exécuter les commandes SQL nécessaires (INSERT/UPDATE/DELETE).

    Pour plus d'infos sur les DataSets et DataAdapters, regarde ce tutoriel

    Après, rien ne t'oblige à utiliser un DataSet, tu peux tout à fait supprimer le XSD et choisir une autre option :
    - exécution "manuelle" de requêtes SQL sur la base (cf. ce tuto
    - Linq to SQL
    - Entity Framework (tuto)
    - un autre ORM (NHibernate par exemple) ou un système de génération de DAL (Subsonic par exemple)
    Merci beaucoup pour les explication c'est plus clair pour moi. Je vais essayer avec les DataSet, normalement plus rapide une fois maitrisé.

    Voici mon bout de code pour l'instant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
                DataSet db = new Database1DataSet();
                   DataRow r = db.Tables["Chats"].NewRow();
                   r["nom"] =  "mon chat" ;
                  db.Tables["Chats"].Rows.Add(r);
    Database1DataSet c'est le DataSet généré avec mon sql compact (qui d'ailleur est totalement vierge donc je pense qu'il va crée les tables si besoin par rapport au xml qu'il a. Mais pour la partie insertion dans ma table je ne trouve pas de SqlAdapter déja existant.
    Vous avez une idée du nom? Dans le tuto tout est fait à la main moi c'est déja à moitier existant donc je demande.

    Autre question au passage, c'est facile de faire des recherches avec les DataSet?


    edit: c'est de l'ADO.net ce que je fait? j'ai vu des tutos assez proche de ce que cherche à faire. Et je doit ouvrir le fichier sql compact en dirai et faire un listing de la table que l'on cible avec l'adapter. Donc au finale double boulot, je crée mes tables 2 fois...

  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 c_creatix Voir le message
    qui d'ailleur est totalement vierge donc je pense qu'il va crée les tables si besoin par rapport au xml qu'il a
    Non, le dataset ne crée pas la table, c'est toi qui doit la créer. En général on fait plutôt les choses dans l'autre sens : on crée d'abord les tables dans la base, et on utilise le designer pour créer automatiquement la DataTable correspondante dans le dataset.

    Citation Envoyé par c_creatix Voir le message
    Mais pour la partie insertion dans ma table je ne trouve pas de SqlAdapter déja existant.
    Vous avez une idée du nom? Dans le tuto tout est fait à la main moi c'est déja à moitier existant donc je demande.
    Normalement les adapteurs sont crées automatiquement quand on importe une table de la base vers le dataset. Si tu as créé la table manuellement, tu peux créer aussi l'adapteur à l'aide du designer.

    Citation Envoyé par c_creatix Voir le message
    Autre question au passage, c'est facile de faire des recherches avec les DataSet?
    Oui, tu peux faire des "requêtes" simples avec la méthode DataTable.Select ou en utilisant une DataView par exemple.

    Citation Envoyé par c_creatix Voir le message
    edit: c'est de l'ADO.net ce que je fait?
    Oui

    Citation Envoyé par c_creatix Voir le message
    Donc au finale double boulot, je crée mes tables 2 fois...
    Pas si tu les importes de la base avec le designer... Il suffit d'afficher ta base dans l'explorateur de base de données et de faire glisser la table voulue vers le dataset

  5. #5
    Membre averti
    Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    34
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 34
    Par défaut
    Merci beaucoup pour les explications je regarde ce soir. C'est pas facile quand on débarque avec toutes ces technologies en .NET.
    Les tutoriaux microsoft c'est bcp de clic clic mais au final de l'affichage seulement... Enfin j'ai fait des recherches sql compact C# la doc ADO.NET doit etre plus adapté

  6. #6
    Membre averti
    Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    34
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 34
    Par défaut
    Dsl mais je suis de retour Voici mon bout de code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
                DataSet db = new Database1DataSet();
                DataRow r = db.Tables["Chats"].NewRow();
                r["Nom"] =  "mon chat" ;
                db.Tables["Chats"].Rows.Add(r);
                Database1DataSetTableAdapters.ChatsTableAdapter DAchat = new Database1DataSetTableAdapters.ChatsTableAdapter();
                DAchat.Insert("Mon chat2");
    Il ne me retourne pas d'erreur et ne fait rien. J'ai penser à utilisé la méthode update mais c'est pour mettre a jour seulement. La méthode insert lui prend les valeurs des colonnes.

    J'ai essayer des select avec visualstudio de faire des select mais je ne trouve pas ma valeur. J'ai vu des exemples de codes mais il y avais un insert en sql donc bon si c'est pour faire des requétes à la main j'ai plus vite fait de tappé directement dans le fichier à la main, non?

Discussions similaires

  1. Réponses: 4
    Dernier message: 02/10/2012, 14h20
  2. SQL Compact Edition & datetime avec les secondes
    Par slacky dans le forum Développement
    Réponses: 4
    Dernier message: 15/09/2011, 14h49
  3. comment travailler avec sql sever 2000
    Par samdou dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 04/12/2010, 20h18
  4. Réponses: 4
    Dernier message: 02/05/2009, 17h56
  5. Réponses: 2
    Dernier message: 22/06/2006, 11h03

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