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

ASP.NET Discussion :

Petite confirmation URGENT svp


Sujet :

ASP.NET

  1. #1
    Membre averti
    Inscrit en
    Septembre 2005
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 22
    Par défaut Petite confirmation sur DataAdapter
    Bonjour,

    Je travail :
    - sur Microsoft Visual 2005
    - en C#
    - utilisant Access 2007

    Ma question :
    Faut-il créer un DataAdapter pour CHAQUE table présente dans ma base?

    Car si on choisi lors de la création d'un DataAdapter une requète portant sur plusieures tables, la fonction Update et Insert ne sont plus disponibles.

    J'arrive à charger les données, de les modiifer en local (j'ai un seul data set que j'ai cré dans l'explorateur de solutions), mais pas moyen de mettre a jour ma base.

    Quelle est la meilleure façon de procéder, car la je commence à craquer...

    merci

  2. #2
    Membre averti
    Inscrit en
    Septembre 2005
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 22
    Par défaut
    personne ne peut me confirmer qu'il faut un DataAdapter par Table présente dans la BD si on veut pouvoir utiliser les DataAdapter pour faire les Updates?

  3. #3
    Rédacteur

    Avatar de Jérôme Lambert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2003
    Messages
    4 451
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 451
    Par défaut
    Moi je dis, y a rien de mieux que d'écrire soit même le code pour les accès aux données et mis à jour

    Mais pour répondre à te question, tu peux écrire toi même les requête Insert, Update, Delete via le code behind avec ton composant.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    adapter.DeleteCommand = new xxxCommand("DELETE FROM ....");

  4. #4
    Membre averti
    Inscrit en
    Septembre 2005
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 22
    Par défaut
    merci, mais je souhaite éviter de me lancer dans des pages et des pages de code. Si déjà il y a plein d'outils graphiques autant s'en servir pour comprendre le fonctionnemen et compléter par du code uniquement là où s'est indispensable

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 37
    Par défaut
    Bonjour,

    On peut dévelloper une classe générique qui va s'adapter à toute les tables, créer les Datatable avec les dataAdapter et ses requetes update, delete, insert (qui portent sur tous les champs définis dans la table access sans avoir à les spécifier individuellement dans le code : simple lecture dans une commmande select qui rapatrie lors de l'initialisation de la table un enregistrement ou zéro quand la table est vide) pour n'importe quelle table.

    Je confirme que cette approche fonctionne avec des tables Access :
    on arrive à lire une table Access quelquonque dans un gridview avec 4 ou 5 lignes de code (juste à spécifier la chaine de connexion du Dataset, le nom de la Table Accces et le datagridview), évidemment sans toucher à la classe générique.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 37
    Par défaut
    Rebonjour,

    Encore plus simple : je viens de trouver ceci :
    4.9 How do I bind a mdb file to a datagrid?
    You can use the classes in the System.Data.OleDb namespace to read a MDB file into a datagrid. You instantiate a OleDbConnection object using a connection string to your MDB file. You then instantiate a OleDbDataAdapter that uses this connection object and a SQL query. Next you create a DataSet object, use the OleDbDataAdapter to fill this dataset, and finally attached this dataset to your datagrid. Here is the code that does this.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    private void Form1_Load(object sender, System.EventArgs e) { 
    // Set the connection and sql strings 
    // assumes your mdb file is in your root 
    string connString = @"Provider=Microsoft.JET.OLEDB.4.0;data source=C:\northwind.mdb"; 
    string sqlString = "SELECT * FROM customers"; 
    // Connection object 
    OleDbConnection connection = new OleDbConnection(connString); 
    // Create data adapter object 
    OleDbDataAdapter dataAdapter = new OleDbDataAdapter(sqlString, connection); 
    // Create a dataset object and fill with data using data adapter's Fill method 
    DataSet dataSet = new DataSet(); 
    dataAdapter.Fill(dataSet, "customers"); 
    // Attach dataset's DefaultView to the datagrid control 
    dataGrid1.DataSource = dataSet.Tables["customers"].DefaultView; }

  7. #7
    Membre éclairé Avatar de quanou
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    311
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 311
    Par défaut
    Ma question :
    Faut-il créer un DataAdapter pour CHAQUE table présente dans ma base?
    Non

    Car si on choisi lors de la création d'un DataAdapter une requète portant sur plusieures tables, la fonction Update et Insert ne sont plus disponibles.
    Ben, je pense que c'est normal. Quelle table (parmi les n) de ta requête est-t'il censé comprendre devoir mettre à jour ou insérer ? Enfin, si j'ai bien compris ce que tu veux dire...

  8. #8
    Membre Expert Avatar de Mose
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 143
    Par défaut
    Citation Envoyé par krouz6
    Faut-il créer un DataAdapter pour CHAQUE table présente dans ma base?
    Si tu veux le plus simplement utiliser les SELECT, INSERT, UPDATE et DELETE, alors oui.

    Si tu veux un truc plus fin, pour éviter des pbs de sécurité, optimiser le nb de requêtes, ... (bref dans un cadre professionnel), alors les outils graphiques de VS.Net ne sont probablement pas l'idéal.

  9. #9
    Membre averti
    Inscrit en
    Septembre 2005
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 22
    Par défaut
    merci à tous. Effectivement, je suis arrivé à la même conclusion. L'idéal est de coder de a à z sans utiliser les outils graphiques. Bon, après des jours et des nuit à me casser la tête à trouver les syntaxes, çà commence à avancer...

    Effectivement boulo, c'est exactement le code que j'ai utiliser.

    Comme c'est mon premier projet orienté objet, je ne sais pas si je procede de la meilleure façon.

    j'ai mes formulaires (qui sont des classes forms)

    j'ai une classe Cl_DataBase où il y a
    * toutes les méthodes qui ont besoin d'acceder à la base de donnée Access
    * le dataset (j'en ai un pour toute l'appli)
    * tous les dataAdapters

    j'ai les classes provenant de mon diagramme de classe contenant les methodes appelé par les formulaires

    Par exemple pour la page Login

    le formulaire login, appelle la methode Login(LoginGranted) présente dans la classe Cl_User, où figure toutes les info sur les utilisateurs. Cette méthode, doit elle meme lancer une methode TestLogin(LoginGranted) présente dans ma classe Cl_DataBase qui se connecte à Access et remplis une DataTable

    D'après ce que j'ai comptis, il faut au maximum utiliser des private static, et les methodes.

    Bref, merci à tous de m'avoir répondu.

Discussions similaires

  1. excel, petite confirmation sur les workbooj
    Par morgan47 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 28/06/2006, 13h34
  2. Urgent Svp : Fichier Mde
    Par Hamdi dans le forum Access
    Réponses: 1
    Dernier message: 06/06/2006, 13h34
  3. psql sur template1 et suppression de base URGENT SVP
    Par donny dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 05/08/2005, 10h59
  4. Urgent svp parametre variable de executeQuery
    Par debdev dans le forum Langage SQL
    Réponses: 2
    Dernier message: 04/08/2005, 11h09
  5. [HVMenu] problème dans les pages ASPX (urgent svp)
    Par hatembr dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 13/01/2005, 09h37

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