[ASP.NET] Cherche objet BDD

Cherche objet BDD [ASP.NET] - C#/.NET managed - Programmation

Marsh Posté le 30-06-2006 à 18:49:33    

Salut,
 
Je suis en train de faire un site en ASP .NET 2.0
 
De par son aspet dynamique, je suis ammené à :
1) Faire des select sans "connaître" le schema
2) Associer à des lignes retournées par un select les résultat d'autres select (boucles imbriquées)
3) Faire des ajout/modification/suppression dans les jeux de résultats retournés
 
1 : En fait, j'ai un objet unique qui gère les requêtes. Les requêtes sont spécifiées dans un fichier de configuration, et du coup je ne sais pas à l'avance quels champs je vais retrouver dans un "select * from produits" par exemple.
2 : Je veux être capable de stocker dans un objet unique des résultats du genre : "select * from famille", et pour chaque ligne, "select * from produit where famille_id = ?"
3 : Une fois que j'ai mon objet, je veux être capable d'aller modifier les lignes qui sont dedans, avec répercution dans la base.
 
Pour les points 1 et 3, à priori, un DataTable est parfait. Seulement, je n'ai jamais compris comment faire fonctionner les méthodes insert(), update() et delete(). A priori, la requête associée est obligatoire. Hors moi je ne la connais pas, je ne sais faire que le select.
Pour le 2° point, un DataSet ne me convient pas, car il contient les résultats des différentes requêtes de façon séquencielles. C'est à la limite jouable, mais autant se faire se peu, je préfère utiliser un objet qui serait du genre d'un DataTable, mais avec, pour chaque ligne, la possibilité de le lier à un DataSet (je peux avoir plusieurs requêtes par ligne)
 
En gros, j'ai besoin d'un objet qui se comporterais comme un document XML (c'est d'ailleurs pour générer un flux XML) que j'ai besoin de ce truc.
 
QQ1 connaît-il un objet qui ferait tout ça ? Dans le FrameWork si possible. J'utilise une connection SQL Server (provider natif) mais je dois pouvoir aussi utiliser un drivers OLE DB afin d'avoir le même comportement quel que soit le SGBD (dans la mesure où il sait faire des curseurs dynamiques évidement)

Reply

Marsh Posté le 30-06-2006 à 18:49:33   

Reply

Marsh Posté le 30-06-2006 à 20:05:25    

Ca inspire les foules, comme d'hab :/

Reply

Marsh Posté le 30-06-2006 à 21:40:31    

N'oublie pas que tu peux faire des références dans un dataset entre plusieurs datatable.  
Donc rien ne t'empeche de travailler avec plusieurs datable liée entre elle.  

Reply

Marsh Posté le 30-06-2006 à 22:18:39    

ah bon ? comment on fait ça ?

Reply

Marsh Posté le 30-06-2006 à 23:52:22    

ps : finalement, pas besoin du point 2, j'ai trouvé un moyen de faire sans. seul hic, je suis bloqué pour faire les modifs. mais c'est pas plus mal finalement, parceque c'est un peu crade à la base ce que je voulais faire, je préfère le faire proprement

Reply

Marsh Posté le 01-07-2006 à 09:14:25    

a vrai dire au niveau programmation, je ne l'ai jms fait, je passe tjs par un xsd qui le fait automatiquement. Mais dans ton cas tu ne connais pas à l'avance le schéma. Je ne saurais donc pas te dire exactement comment faire

Reply

Marsh Posté le 01-07-2006 à 12:08:02    

En effet, à la base, je l'appli sais ce qu'elle doit faire en inspectant un fichier comme celui-ci :

Code :
  1. <?xml version="1.0" encoding="utf-8" ?>
  2. <view>
  3.   <sqlQuery>select id, title, maxdate, mindate from (select a.id, a.title, max(h.date) maxdate, max(h.date) mindate from articleHistory h, article a where h.article_id = a.id group by a.id, a.title) articles where null is null</sqlQuery>
  4.   <keys>
  5.     <key name="ALL"/>
  6.     <key name="ONE" sql="id = @id">
  7.       <parameter name="id" sqlType="numeric"/>
  8.     </key>
  9.   </keys>
  10.   <sorts>
  11.     <sort name="MAXDATE" sql="order by maxdate"/>
  12.     <sort name="-MAXDATE" sql="order by maxdate desc"/>
  13.     <sort name="TITRE" sql="order by title"/>
  14.     <sort name="-TITRE" sql="order by title desc"/>
  15.   </sorts>
  16. </view>


 
Mais ce fichier est modifiable à souhait, on peut en rajouter, et tout le tintouin.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed