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

Accès aux données Discussion :

VB.net Quel est la meilleur solution pour un accés en BD


Sujet :

Accès aux données

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 15
    Points : 11
    Points
    11
    Par défaut VB.net Quel est la meilleur solution pour un accés en BD
    Bonjour,

    Je suis en train de developper un application en VB.net qui utilise une base de donnée Access.

    Et en fait, j'ai un petit soucis car j'ai plusieur requêtes à executer à la suite mais j'obtien le message d'erreur suivant lorsque je veu executer deux requetes à la suite

    en l'occurence un SELECT avec la methode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    oCmd.CommandText = "select * from MA_TABLE;"
    oDataReader = oCmd.ExecuteReader(CommandBehavior.CloseConnection)
    puis un INSERT avec la methode suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    oCmd.CommandText = "insert into MA_TABLE values('7', 'rfrefre', 'hbbvbfvfbvkr');"
    oCmd.ExecuteNonQuery()
    le message d'erreur est le suivant :
    Une exception non gérée du type 'System.InvalidOperationException' s'est produite dans system.data.dll

    Informations supplémentaires : OleDbCommand est actuellement occupé Open, Fetching.
    Donc ce que je fait c'est que entre les 2 requetes je met :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    If Not oConn.State = ConnectionState.Closed Then
                oConn.Close()
                oConn.Open()
    End If
    Le probleme c'est que mon application réalise beaucoup de requetes à la suite. J'aurais donc aimer savoir si il exister une technique moins couteuse en "connexion/deconnexion".

    J'ai penser à un DataSet qui chargerait la base en local (dites moi si je me trompe) mais étant donnée que la base est assez conséquente j'y ai renoncer.

    Voila, merci bcp pour votre aide
    @+

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    374
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 374
    Points : 451
    Points
    451
    Par défaut
    Bonjour,
    l'utilisation d'un datareader exige la fermeture du reader après "utilisation".
    odatareader.close. (dans ton cas le datareader et la connection se ferment)
    un datareader est plus rapide mais dans ton cas ou tu extrais toute la table, un dataset serait plus adapté.(liaison aux contrôles, vues...).
    Les datasets sont adaptés à la gestion des bases de données.
    Pour lire et modifier quelques enregistrements un datareader et datacommand suffisent.
    Si tu dois traiter de nombreux enregistrement, utilise un dataset et un datacommand.
    Bon boulot.
    Jean

  3. #3
    Membre à l'essai
    Inscrit en
    Décembre 2004
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 14
    Points : 16
    Points
    16
    Par défaut
    bonjour,
    je vous suggère dans votre programmation d'utiliser l'approche 3-tiers; vous envisagerez une assemblée comportant au moins une classe et dans laquelle vous programmez tous les accés (select, insert, update, delete, drop, ...). chaque formulaire hérite d'une classe métier (évènements, méthodes, ...). Dans votre classe associée au formulaire, vous avez des méthodes qui réagissent aux évènements; pour le besoin vous créez une instance de la classe placée dans l'assemblée et vous invoquez une méthode d'accés qui vous restitue selon le besoin un dataset, datareader, un tableau de liste items ou meme un xml (cas de sérialisation); meme si dans la méthode programmée en assemblée vous avez oublié de fermer la connextion, le dataset ou le datareader, aucun problème car tous les objets créés dans une méthode sont locaux et disparaissent dés que vous quittez la méthde. Il est entendu que vous définissez une méthode pour chaque requete.
    bon courage

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Excusez moi, mais je suis debutant là-dedans et n'a aucune connaissance de l'objet, c'est pourquoi j'aurai bien aimé quelque éclaississement sur les assemblé,
    Classe.

    Si vous savez ou est-ce que je peux au moin me diriger ^^

    Merci

  5. #5
    Membre à l'essai
    Inscrit en
    Décembre 2004
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 14
    Points : 16
    Points
    16
    Par défaut
    salut,
    dans le menu visualstudio --> website, ajouter un element , classe
    vous l'appeler par exemple myAssembly
    à l'intérieur vous créer un espace de nom exemple myCampus et à l'intérieur de cet espace vous nommer la classe campus
    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
     
    Imports System
    Imports System.Web.UI
    Imports System.Web.UI.WebControls
    Imports System.Data
    Imports System.Data.OleDb
    Imports Microsoft.VisualBasic
     
    Namespace myCampus
     
        Public Class campus
            Inherits System.Web.UI.Page
    ...
        End Class
     
    End Namespace
    vous mettez dans cette classe les méthodes d'accés
    dans votre code behind vous importer l'espace créé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Imports System
    Imports System.Web.UI
    Imports System.Web.UI.WebControls
    Imports System.Data
    Imports System.Data.OleDb
    Imports myCampus
     
    Partial Class apprendre
        Inherits System.Web.UI.Page
    ...
    End Class
    bon travail

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 15
    Points : 11
    Points
    11
    Par défaut
    merci bien j'ai developper un assembly qui s'occupe des connexions et de l'execution des requetes.

    je test tout ca voir si les performances sont bcp affecté et je vous tien au courant

Discussions similaires

  1. Réponses: 2
    Dernier message: 26/10/2014, 18h11
  2. Réponses: 20
    Dernier message: 05/10/2013, 20h14
  3. Réponses: 4
    Dernier message: 26/09/2008, 13h16
  4. quel est le Meilleur language pour piloter le port serie ?
    Par flyfab dans le forum Langages de programmation
    Réponses: 7
    Dernier message: 21/07/2003, 10h03

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