Se connecter / S'enregistrer

Résolu Bdd access : .accdb et c# = > dataset

Solutions (17)
Tags :
  • Interface
  • table
  • Programmation
, Programmation (collector) |
Bonjour,

Voila suite a la réalisation d'un projet personnel j'ai crée une basse de donner avec access 2010 .
J'ai ensuite utilisé l'interface graphique de VS 2010 pour ajouter cette base a mon projet !

Vs 2010 me crée un objet de type dataset automatique avec ma base .
Donc dans mon code je déclare mon objet bdd :

  1. PlowComptaDataSet bdd = new PlowComptaDataSet()
;

L'intellisense de Vs 2010 me permet de trouvais mes table et mes colonne !

mais je n'arrive a afficher le contenue de la bdd [:gooniz:9]

donc je suis bloquer a bdd.Client.ClientColum

( pour le moment ma bdd contiens une table qui contien 2 colonne une id (en auto-incrémente ) et une colone Client ( de type txt )

En fais je cherche a savoir comment je peut retourné les donné de ma bdd , comment en ajouter, supprimer, modifier enfin tous quoi !

Merci
Contenus similaires
Meilleure solution
partage
, Modo en slip |
andrelec1 a dit :
dsl je doit passer pour un abruti fini mais des fois c'est comme ça on sais pas pourquoi mais ça veut pas ... [:gooniz:9] [:gooniz:9]
je ne comprend toujours pas comment cela fonctionne !!! ...


Alors, si tu passes par le dataset :

  1. DatabaseDataSet.ClientDatatable ma_datatable = new DatabaseDataSet.ClientDatatable()
  2. DataBaseDataSet.ClientTableAdapter mon_tableadapter = new DataSet.ClientTableAdapter()
  3.  
  4. ma_datatable = mon_tableadapter.GetData()
  5.  
  6. LB_Client.Datasource = ma_datatable
  7. LB_Client.DisplayMember = "Client"
  8. LB_Client.ValueMember = "Client"


Une autre solution, par la dataset toujours :
Au lieu d'utiliser la méthode Getdata(), qui renvoie en fait tout les champs de ta datatable dans le dataset, tu peux ( et tu vas devoir le faire pour des requêtes spéciales ) créer des requêtes dans ton dataset. Très pratique.
Le code est identique que celui au dessus (à quelque chose près, j'ai pas testé, je te le fais de tête), sauf que tu appelles ta méthode perso au lieu de "GetData()".

Voilà.
  • Commenter cette solution |
Score
0
òh
òi
, Modo en slip |
Pas de problème :) 

Maintenant que tu as le principe, tu vas voir, tu peux créer tes requêtes perso, les appeler avec le tableadapter.
Ca facilite vraiment les choses.

Aller, bon courage pour la suite :) 
  • Commenter cette réponse |
Score
0
òh
òi
, Programmation (collector) |
Meilleure réponse sélectionnée par andrelec1.
  • Commenter cette réponse |
Score
0
òh
òi
, Programmation (collector) |
dsl pour pour le temps de reponce, mais j'ai pas pus travailler sur le projet pendant quelque jours ... j'ai fini par y arriver ...

j'ai fais comme ça :
  1. using PlowCompta_v06.DatabaseDataSetTableAdapters;
  2. ...
  3. ClientTableAdapter BDD_client = new ClientTableAdapter();
  4. ...
  5. foreach (DataRow Row in BDD_donnee.GetData().Rows)
  6. {
  7. // récupération des info dans row[i] ...
  8. }


encors merci a toi SliverPopop
  • Commenter cette réponse |
Score
0
òh
òi
, Programmation (collector) |
dsl je doit passer pour un abruti fini mais des fois c'est comme ça on sais pas pourquoi mais ça veut pas ... [:gooniz:9] [:gooniz:9]
je ne comprend toujours pas comment cela fonctionne !!! :cry:  :cry:  :cry:  :cry:  :cry: 

Citation :
si tu passes par un dataset, pas besoin de OledbConnection

Citation :
Tu créé ensuite un objet OledbCommand, auquel tu passes en paramètre ta requête sql rentré dans un variable string, ainsi que ton objet OledbConnexion.


Finalement j'ai décider d'utilisé une bdd générer avec VS2010 ( .sdf ) :whistle: 

Donc me voila avec :
- Une listbox nommé : LB_client
- Une bdd avec sont dataset : DatabaseDataSet

ma bdd possède une table : Client
qui possède deux champ : id ( int, auto incrémente ) et Client (varchar(30))

Le but pour le moment et de lister tous les client dans la ListBox :D 

Pourrais tu me donner le code le plus simple possible ( même si cela n'est pas du tous opti ) juste pour que je puisse comprendre comment cela marche concrètement et avoir un exemple fonctionnelle sur mon projet pour faire différent test par ce que pour le moment je bloque devant mon code vide sans rien comprendre et cela me fruste plus qu'autre chose !
trop de datatruc different ^^

Déjà un grand merci SliverPopop !



  • Commenter cette réponse |
Score
0
òh
òi
, Modo en slip |
Pour la connexion,
si tu passes par un dataset, pas besoin de OledbConnection, c'est en automatique puisqu'au moment de la création de ton dataset, tu as spécifié une bdd (ton dataset est typé, et la chaîne de connexion à la base est déjà rentrée).

Maintenant, tu dois ouvrir une connexion si tu utilises un objet OlebdCommand pour exécuter ta requête sql.

tu créé une OledbConnexion, avec une propriété "connectionstring", qui n'est rien d'autre que la chaîne de connexion à la base de données. tu ouvres cette connexion ensuite, sinon ça ne peut pas fonctionner (c'est en auto avec le dataset et les tableadapter).
Tu créé ensuite un objet OledbCommand, auquel tu passes en paramètre ta requête sql rentré dans un variable string, ainsi que ton objet OledbConnexion.

Tu dois ensuite, créé un datareader qui est chargé par la commande (tu créé un datareader si ta requête sql te renvoie un/des résultat(s), sinon, si c'est un update ou insert ou delete ou autre, pas besoin de datareader).
Une fois de datareader chargé, il doit ensuite chargé une datatable.

Et voilà.

un exemple d'utilisation avec un dataset, pour charger une datatable (je travaille en VB et en C#, ici un exemple en VB mais c'est pareil, sauf pour la déclaration des variables, je te mets l'autre en C#):

  1. Dim prod_dt As New polyval_dataset.ProduitsDataTable
  2. Dim prod_ta As New polyval_datasetTableAdapters.ProduitsTableAdapter
  3. Dim num_sect As Integer
  4.  
  5. prod_dt = prod_ta.GetProdSect(num_sect)


Et c'est tout !

parce que dans l'interface graphique de mon dataset, j'ai créé une fonction qui s'appelle "GetProdSect", j'ai spécifié un paramètre à cette requête et basta !
C'est très vraiment simple !

un exemple d'utilisation avec un objet Command (en C#) :

  1. SqlCommand prod_cmd = new SqlCommand();
  2. prod_cmd.Connection = ClasseLib.CConnexion.sql_connection;
  3. prod_cmd.CommandText = "SELECT PartNumber FROM Production GROUP BY PartNumber ORDER BY PartNumber ASC";
  4. SqlDataReader prod_dr = prod_cmd.ExecuteReader();
  5. dt.Load(prod_dr);


Ne pas oublier dans mon deuxième code, d'ouvrir et de fermer la connexion, sinon ça ne fonctionnera pas.

Comme toi, j'ai appris le langage de programmation en autodidacte (enfin presque parce que je suis en alternance, et je développe toute la journée). J'ai commencé par le VB, et j'ai ensuite appris le C# tout seul, c'est pas difficile :) 
  • Commenter cette réponse |
Score
0
òh
òi
, Programmation (collector) |
cela fais biento 8 mois que j'ai commençais le c# !

J'ai appris le html/css/php en autodidacte ...
et depuis septembre je suis en premier année a SUPINFO ...
J'ai eu des cours d'algo, de c, et d'ASM; ont a aussi vue quelque notion de sql ...
En plus des cours normal j'ai fais partie d'une petit assos qui ma appris le c# ! Mais rien sur les bdd !

Mais aucune forma sur l'utilisation de bdd c ou en c# ...

En fait ce que je comprend pas c'est la logique de communication avec la bdd !
En php par exemple communiquer avec une bdd il faut faire :
  1. mysql_connect("localhost","pseudo","mdp"); // connections a la bdd
  2. mysql_select_db("base"); // choix de la base
  3. mysql_query(" .....") // requête sql
  4. mysql_close(); // déconnections de la bdd


sur mon projet c# je suis bloquer a :
PlowComptaDataSet bdd = new PlowComptaDataSet(); // PlowCompta étant le nom de ma bdd

Je vais aller télécharger le cours de sergé tahé et le lire voir si ça me débloque !


En fais la ou je bloque c'est sur la connections, enfin sur la string connexion !
  • Commenter cette réponse |
Score
0
òh
òi
, Modo en slip |
Le fait qu'il soit fait pour visual studio 2005 ne change strictement rien...

Il y a deux manières de rapatrier des données depuis une base de données.

Ou tu créés un dataset, très pratique, ou alors tu ouvres une connexion à la base de données, tu exécuté une commande, et tu fermes la connexion.
Concrètement il se passe la même chose, mais le dataset est plus facile à utiliser, car tu créés tes requêtes facilement, elles sont attachées aux datatables de ton dataset, ensuite tu créés un tableadapter, tu exécute ta requête qui charge le datatable, et c'est bon...

Maintenant si tu ne veux pas utiliser le dataset, voilà l'autre solution :

  1. string sql_string;
  2. datatatable my_dt = new datatable();
  3.  
  4. sql_string = "SELECT PartNumber FROM MACHINE"
  5.  
  6. open_conn()
  7. oledbcommand my_command = new oledbcommand(sql_string, connexion);
  8.  
  9. oledbdatareader my_dr = cmd.executerereader();
  10.  
  11. ma_dt.Load(my_dr)
  12.  
  13. close_conn()


connexion est une variable oledbconnexion, qui sert à la connexion (évidemment)
open_conn(), est une fonction que j'ai créé qui teste la connexion à la base de données, si elle est fermé, elle l'ouvre, sinon rien.
close_conn() est une fonction qui la ferme.


C'est vraiment très très très simple, si tu as téléchargé le cours de sergé tahé sur developpez.net, tu peux tout trouver à partir de la page 226.

Juste pour infos, ça fait combien de temps que tu développes en C# ?
Tu as déjà développer avec un autre langage ?Bref, c'est quoi ton expérience dans le développement informatique ?
  • Commenter cette réponse |
Score
0
òh
òi
, Programmation (collector) |
J'ai fais le tours des tuto que j'ai pue trouvais, ils ont tousse un point commun , c'est qu'il sont vieux !

le plus récent que j'ai lue utilisé vs2005 ...

Sur tous j'ai comprendre qu'il y avais une phase de connections qui d’après ce que j'ai pue comprendre na pas besoin d'avoir lieux car vs2010 me crée un dataset de ma base directement ...

Ou alors j'ai rater quelque chose !

dans les fichier de mon projet j'ai : Plowcompta.accdb ( et Database.sdf pour des test ) et avec l'intellisense je peut avoir des objet de nom : PlowcomptaDataSet et DatabaseDataSet ...

Enfin je mouline toujours dans la semoule ...
  • Commenter cette réponse |
Score
0
òh
òi
, Modo en slip |
Tu peux créer une oledbcommand, à laquelle tu passes en paramètre une string avec ta requète sql et un objet oledbconnection (oledb ca veut dire que c'est pour access).

Il existe de très bons tuto sur developpez.net.

Tu vas voir c'est facile :) 
  • Commenter cette réponse |
Score
0
òh
òi
, Programmation (collector) |
oula ça vas un peut trop vite pour moi !

je n'est pas de .GetData() !

(En fait je cherche pour le moment un système simple pour faire un programme qui utilise une bdd, je ne suis pas forcé a utilise une bdd access si il y a un moyen plus simple ! )
  • Commenter cette réponse |
Score
0
òh
òi
, Modérateur |
Ah pardon, je pensais à DataReader et pas DataSet...
Au temps pour moi...
  • Commenter cette réponse |
Score
0
òh
òi
, Modo en slip |
Explication de ton erreur :
tu passes un dataset en paramètre, alors qu'il faut passer un datareader.

Tu dois écrire :

oledbcommand my_cmd = new oledbommand(ma_sql_string, ma_connection)
oledbdatareader mon_dr = my_cmd.executereader()

ma_datatable.load(mon_datareader)

il y a plusieurs manières de charger une datatable.
Soit tu le fais par le dataset comme dans mon premier post, soit tu le fais comme je viens de te le montrer, et comme avait commencer Omar.

Voilà.
  • Commenter cette réponse |
Score
0
òh
òi
, Programmation (collector) |
@OmaR
  1. PlowComptaDataSet accdb = new PlowComptaDataSet();
  2. DataTable bdd = new DataTable();
  3. bdd.Load(accdb);


La méthode surchargée correspondant le mieux à 'System.Data.DataTable.Load(System.Data.IDataReader)' possède des arguments non valides
..

je testerais la méthode de SliverPopop un peut plus tard !

  • Commenter cette réponse |
Score
0
òh
òi
, Programmation (collector) |
Merci a vous deux ...
je testerais ça ce soir et je vous dirais si j'arrive a faire quelque chose !


@OmaR :
C'est une base de donner access, cree avec microsoft access 2010 !
  • Commenter cette réponse |
Score
0
òh
òi
, Modo en slip |
andrelec1 a dit :
Bonjour,

Voila suite a la réalisation d'un projet personnel j'ai crée une basse de donner avec access 2010 .
J'ai ensuite utilisé l'interface graphique de VS 2010 pour ajouter cette base a mon projet !

Vs 2010 me crée un objet de type dataset automatique avec ma base .
Donc dans mon code je déclare mon objet bdd :

  1. PlowComptaDataSet bdd = new PlowComptaDataSet()
;

L'intellisense de Vs 2010 me permet de trouvais mes table et mes colonne !

mais je n'arrive a afficher le contenue de la bdd [:gooniz:9]

donc je suis bloquer a bdd.Client.ClientColum

( pour le moment ma bdd contiens une table qui contien 2 colonne une id (en auto-incrémente ) et une colone Client ( de type txt )

En fais je cherche a savoir comment je peut retourné les donné de ma bdd , comment en ajouter, supprimer, modifier enfin tous quoi !

Merci


Salut,

Normalement, dans ton dataset, tu as une méthode, sous ta datatable qui s'appelle GetData().

Tu peux faire :

  1. MaDatatableDuDataset ma_dt = new MaDatatableDuDataset()
  2. MonTableAdapterDuDataset mon_ta = new MonTableAdapterDuDataset()
  3.  
  4. ma_dt = MonTableAdapterDuDataset.Getdata()


il me semble que là tu vas rapatrier toutes les données.

Tu peux ensuite créer tes propres requêtes, et tu n'auras plus qu'à les appeler de la même manière que la méthode GetData(), avec un tableadapter.

Attention à créer ta datatable du même type que celle du Dataset, de même pour un tabla adapter.

Un exemple perso pour essayer de faire clair :

le dataset s'appelle polyval_Dataset, une des table du dataset s'appelle Secteurs, et on utilise un table adapter, et j'ai créé une requête qui s'appelle "GetSecteur", et tu peux passer des paramètres, ici la variable "utilisateur".

  1. polyval_dataset.SecteursDatatable ma_dt = new polyval_dataset.SecteursDatatable
  2. polyval_dataset.SecteursTableAdapter mon_ta = new polyval_dataset.SecteursTableAdapter
  3.  
  4. ma_dt = mon_ta.GetSecteur(utilisateur)


Si tu as d'autres questions, ce sera avec plaisir.
  • Commenter cette réponse |
Score
0
òh
òi
, Modérateur |
Salut,

Quel est le type de données de PlowComptaDataSet ?
Un DataSet ?
Tu devrais pouvoir faire :
  1. DataTable dt = new DataTable();
  2. dt.Load(bdd);


Et avec ta DataTable tu peux afficher les données.
  • Commenter cette réponse |

Ce n'est pas ce que vous cherchiez ?

Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS