|
begin process at 2008 07 20 15:55:48
Derniers logiciels
|
Trouver une ressource (Nouvelle version du moteur, plus rapide & pertinent, essayez le !)
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
Sujet : Récupération donnée Oracle [ Base de données / Oracle ] (jonathanC)
|
Récupération donnée Oracle
le 04/02/2008 09:59:05

jonathanC
|
Bonjour, j'utilise cette classe : http://www.csharpfr.com/code.aspx?ID=25671dans une webpart C#, le déploiement se fait bien apres quelque bidouillage. mais j'ai 2 questions : où est-ce que l'on indique la requete SQL a effectué?(perso j'ai rajouter une ligne : sQuery =" select ...."; et deuxième question : comment est-ce que l'on manipule les donnée de l'objet qui contient le résultat de notre requete? merci
|
|
|
|
Re : Récupération donnée Oracle
le 04/02/2008 10:05:40

leprov
|
Si ma mémoire ne me joue pas de tours, je dirais que cette source est obsolète. A priori, si tu utilise le dernier DAC oracle, tu peux utiliser dataset, dataadapter, et autres objets hauts niveaux qui vont te permettre de te générer tout le code adéquat (et te résoudre toutes les questions que tu te pose et t'éviter d'écrire tes requêtes directement dans ton code, avec les contraintes et risques que ca comporte).
|
|
|
|
Re : Récupération donnée Oracle
le 04/02/2008 10:12:21

jonathanC
|
Bonjour, merci pour cette réponse, cependant ça fait 2 semaine que je fais du C# et je ne suis pas encore familier :s pourrais-tu me détaillé un peu plus ta réponse :s
sur la doc de microsoft j'ai trouvé ça :
public DataSet SelectOracleSrvRows(DataSet dataset,string connection,string query) { OracleConnection conn = new OracleConnection(connection); OracleDataAdapter adapter = new OracleDataAdapter(); adapter.SelectCommand = new OracleCommand(query, conn); adapter.Fill(dataset); return dataset; }
cependant je ne comprend pas comment renseigné les paramètre de connection, ainsi que la requete a effectué.
|
|
|
|
Re : Récupération donnée Oracle
le 04/02/2008 10:30:10

leprov
|
dans l'IDE, tu peux cliquer droit sur ton projet pour ajouter un nouveau dataset a ton projet. classiquement, cela te permet de mapper tes tables de base de données sur des objets générés via un mode graphique. Cependant, oracle n'est pas géré nativement pour ca, et il te faut installer le DAC (data access component) oracle (que tu pourra trouver aisément sur le net).
A partir de la, il te suffit de paramétrer correctement ta chaine de connection a la base de données, puis tu pourra tout faire en mode graphique (le mappage base de données/objets C#, les requêtes en évitant de les mettre dans le code en dur avec les problèmes de sécurité que cela comporte, etc...)
Bref, deux choses a rechercher pour toi :
1 - utilisation des datasets
2 - interopérabilité oracle et datasets
Tu trouvera (normalement) pour les deux un tas de tutoriels/codes sources/questions sur des forums.
|
|
|
|
Re : Récupération donnée Oracle
le 04/02/2008 10:45:21

jonathanC
|
hm public DataSet SelectOracleSrvRows(DataSet dataset, string connection, string query){ connection = "Provider = msdaora; Data Source =CHAINE_HOTE ; User Id = UTILISATEUR; Password = MDP";query = "select * from intranet_employe";OracleConnection conn = newOracleConnection(connection);OracleDataAdapter adapter = newOracleDataAdapter();adapter.SelectCommand = newOracleCommand(query, conn);adapter.Fill(dataset); return dataset;}
je récupère donc le résultat de ma requête sous forme d'un dataset, il faut que je traite le résultat pour une webpart donc je ne suis pas sur de vouloir utiliser sous la forme d'un mode graphique. En gros ce que je souhaiterai c'est de pouvoir récupérer les employé 1 a 1, et de les ajouter dans mon organigramme ( tree) en fonction de leur service. Donc il me reste à trouver comment manipuler les dataset. ( d'ailleur comment pourrais-je tester si mon dataset a bien été rempli correctement ?)
|
|
|
|
Re : Récupération donnée Oracle
le 04/02/2008 11:34:54

leprov
|
Le mode graphique te sert simplement a toi, codeur, d'éviter de te frapper tout le code et que ledit code soit généré. Tu "dessine" ta table comme dans ta BD, tu paramètre ta requête via l'éditeur, qui se chargera pour toi de la sécurité etc...Ca t'évitera lors de tes requêtes d'avoir des failles de sécurité, de perdre un temps fou a mapper tes tables (ou d'avoir des dataset faiblement typés avec la lourdeur et le manque de propreté/maintenabilité que cela engendre).
utiliser DataSet (tel que et non dérivé) c'est comme utiliser une Form telle que...c'est possible, mais c'est un non sens (d'un point de vue POO). du moins pour l'utiliser pour autre chose que du polymorphisme et retyper fortement par la suite...
Après si tu souhaite faire comme ci dessus, libre a toi, mais personnelement je te le déconseille vivement.
|
|
|
|
Re : Récupération donnée Oracle
le 04/02/2008 11:52:00

jonathanC
|
Le mode graphique te sert simplement a toi, codeur, d'éviter de te frapper tout le code et que ledit code soit généré.
hm oui le pb(en tant que stagiaire) c'est qu'il faudra que j'explique a la ligne pres le code généré, d'ou mon envie de le taper moi même. Ca t'évitera lors de tes requêtes d'avoir des failles de sécurité, de perdre un temps fou a mapper tes tables (ou d'avoir des dataset faiblement typés avec la lourdeur et le manque de propreté/maintenabilité que cela engendre).
je voudrais creer une webpart pour WSS, avec un simple select sur une table d'employé pour générer un organigramme. Au risque de paraitre stupide et sans vouloir te froissé, je ne vois pas quelles failles de sécurité je pourrais avoir? utiliser DataSet (tel que et non dérivé) c'est comme utiliser une Form telle que...c'est possible, mais c'est un non sens (d'un point de vue POO). du moins pour l'utiliser pour autre chose que du polymorphisme et retyper fortement par la suite...aie ça devrait me parlé, mais ça me dépasse un peu là Après si tu souhaite faire comme ci dessus, libre a toi, mais personnelement je te le déconseille vivement.
Ce que je souhaite, c'est de récupérer de manière simple mes employés, faire une boucle pour les service, inclure une seconde boucle pour les employés, et généré ainsi mon arbre. En php ça m'aurait pris 3 sec, et en C# ça me fait déprimé.. Mon stage arrive à sa fin et il faut absolument que je finisse ma webpart...
|
|
|
|
Re : Récupération donnée Oracle
le 04/02/2008 13:35:56

leprov
|
si cest pour expliquer le code a la ligne pret, le C# n'est peut-etre pas le choix de langage le plus judicieux, puisque le langage se base bcp sur l'IDE et que la quantité de code généré peut être franchement conséquente...(avis personnel hein ^^)
pour le coté sécurité, si tu n'as qu'une requête sans paramètres pas de soucis, effectivement, cependant je peux pas deviner qu'il n'y a que cette requête (et que ton projet n'en contient pas d'autres). Au moindre paramètre le risque sera la.
pour le coté "ca te dépasse" je voulais simplement dire que si tu utilise ton dataset sans utiliser le code généré, tu vas utiliser la classe DataSet telle que. Cest comme si pour typer un int, un string, ou un double, pour les 3 tu utilisais des "object" et que tu t'en foutais du type réel sous jacent. Ca fonctionne, ca semble peut être pratique dans le cas particulier de ton appli (exemple hein), mais conceptuellement parlant c'est un non sens, et ca ne colle pas du tout avec le langage.
utiliser un dataset, t'aurais rien de plus simple....Juste une série de clicks et fournir a l'IHM les noms des tables et des champs, la chaine de connection, la requête, et terminé...Moi le faire en C# ca me prendrais 3 secondes et en PHP ca me déprime... :)
|
|
|
|
Re : Récupération donnée Oracle
le 04/02/2008 14:09:46

jonathanC
|
si cest pour expliquer le code a la ligne pret, le C# n'est peut-etre pas le choix de langage le plus judicieux, puisque le langage se base bcp sur l'IDE et que la quantité de code généré peut être franchement conséquente...(avis personnel hein ^^)
avis que je respecte, a vrai dire je dois réaliser un intranet avec sharepoint et pour rajouter des fonctionnalité j'ai voulu coder des webpart, je n y connais absolument rien en developpement .net, mon tuteur non plus donc je me débrouille un peu tout seul, et quand j'ai demandé en quel langage je devais programmer mes webpart on m a orienté vers le C#...
pour le coté sécurité, si tu n'as qu'une requête sans paramètres pas de soucis, effectivement, cependant je peux pas deviner qu'il n'y a que cette requête (et que ton projet n'en contient pas d'autres). Au moindre paramètre le risque sera la.
c'est vrai autant pour moi ...en fait j'ai une requete ou je vais chercher mes employé et ensuite je voudrais rajouter ces employé a mon tree.( c'est tout ^^ )
pour le coté "ca te dépasse" je voulais simplement dire que si tu utilise ton dataset sans utiliser le code généré, tu vas utiliser la classe DataSet telle que. Cest comme si pour typer un int, un string, ou un double, pour les 3 tu utilisais des "object" et que tu t'en foutais du type réel sous jacent. Ca fonctionne, ca semble peut être pratique dans le cas particulier de ton appli (exemple hein), mais conceptuellement parlant c'est un non sens, et ca ne colle pas du tout avec le langage.
oui là ca me parle beaucoup mieu, ça aurait du me parler dès le début ( honte à moi ) mais j'ai des petits trou :)
utiliser un dataset, t'aurais rien de plus simple....Juste une série de clicks et fournir a l'IHM les noms des tables et des champs, la chaine de connection, la requête, et terminé...Moi le faire en C# ca me prendrais 3 secondes et en PHP ca me déprime... :)
lol, ouai si j arrivais à le faire en le codant, ça m'arrangerai ^^ est-ce que ma connection marche même si la bdd n'est pas sur le meme serveur que sharepoint?( je sais qu'en php je n'ai pas besoin de renseigner l'ip du serveur mais en C# je suis pas sur .. :p )
si ma connection est bonne, il faut que je trouve le moyen, de récupérer et d'afficher mon dataset...^^
|
|
|
|
Re : Récupération donnée Oracle
le 04/02/2008 16:08:03

jonathanC
|
ça y est je déprime... voila mon code, déja j'ai l'impression que ma connection ne marche pas..En tout cas quand je déploie ma webpart, sharepoint bug...
Le data source dans la connection string, c'est la Chaine_hote qu'il faut mettrre ou bien le nom de la table?
using System;
using System.Runtime.InteropServices;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Serialization;
using Microsoft.SharePoint;
using Microsoft.SharePoint.WebControls;
using Microsoft.SharePoint.WebPartPages;
using System.Data;
using System.Data.OracleClient;
using System.Web;
using System.Collections;
namespace WebPart4
{
[Guid("0781047e-d071-48d9-9ce7-463997e752ab")]
public class WebPart4 : System.Web.UI.WebControls.WebParts.WebPart
{
public WebPart4()
{
this.ExportMode = WebPartExportMode.All;
}
public DataSet SelectOracleSrvRows(DataSet dataset, string connection, string query)
{
connection = "Provider = msdaora; Data Source = Chaine_HOTe? ; User Id = Identifiant ; Password = MDP";
query = "select * from intranet_employe";
OracleConnection conn = new OracleConnection(connection);
OracleDataAdapter adapter = new OracleDataAdapter();
adapter.SelectCommand = new OracleCommand(query, conn);
adapter.Fill(dataset);
return dataset;
}
DataSet dataset = null;
string valeur = null;
string connection = null;
string query = null;
protected override void CreateChildControls()
{
this.Controls.Clear();
TreeView tree = new TreeView();
this.Controls.Add(tree);
TreeNode rootNode = new TreeNode("AQUITANIS");
TreeNode firstNode = new TreeNode("Direction Générale");
TreeNode secondNode = new TreeNode("Direction des ressources Humaines");
TreeNode thirdNode = new TreeNode("Direction Financière");
TreeNode fourthNode = new TreeNode("Direction de la Location");
TreeNode fifthNode = new TreeNode("Direction du Patrimoine");
tree.Nodes.Add(rootNode);
rootNode.ChildNodes.Add(firstNode);
rootNode.ChildNodes.Add(secondNode);
rootNode.ChildNodes.Add(thirdNode);
rootNode.ChildNodes.Add(fourthNode);
rootNode.ChildNodes.Add(fifthNode);
rootNode.SelectAction = TreeNodeSelectAction.None;
firstNode.SelectAction = TreeNodeSelectAction.None;
secondNode.SelectAction = TreeNodeSelectAction.None;
thirdNode.SelectAction = TreeNodeSelectAction.None;
fourthNode.SelectAction = TreeNodeSelectAction.None;
fifthNode.SelectAction = TreeNodeSelectAction.None;
DataSet ds = SelectOracleSrvRows(dataset, connection, query);
foreach (DataRow dr in ds.Tables[0].Rows)
{
// Remplace "nom_colonne" par le nom d'une des colonnes de ta table ORACLE
valeur = dr["nom"] as string;
this.Page.Response.Write(valeur);
}
}
}
}
help :(
|
|
|
Classé sous : donnée, requete, récupération, oracle
|
CalendriCode
| | | L | M | M | J | V | S | D |
| | 1 | 2 | 3 | 4 | 5 | 6 |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 | | | |
|
Téléchargements
Logiciels à télécharger sur le même thème :
|
|