Bonjour,
Suite aux conseils obtenu sur une autre discussion, je veux réaliser un modèle indépendant du type de bases de données utilisé. J'ai donc suivi le tuto que l'on m'avait conseillé.
Lors de l'exécution, j'obtiens une erreur qui me dit que le fournisseur de données .NET Framwork demandé est introuvable (J'utilise Visual Studio 2010 et je veux me connecter à Oracle 10G Express).
Dans mon code, il y a une première partie que j'ai réalisé et qui fonctionne (la partie Oracle 10G XE) et l'autre partie pour le modèle indépendant, qui devrait me retourner le même résultat.
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
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124 using System; using System.Collections.Generic; using System.Linq; using System.Text; using Oracle.DataAccess.Client; using MySql.Data.MySqlClient; using System.Data.Common; using System.Configuration; using System.Data; namespace ConsoleApplication5 { class Program { static void Main(string[] args) { //-------------------------------ORACLE 10G XE--------------------------------------------------------- //string Ochaine = ConfigurationManager.ConnectionStrings["ConnexionOracle"].ConnectionString; string Ochaine = "Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.0.2)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=XE)));User Id=Damien;Password=Damien;Connection Lifetime=120;Persist Security Info=False;"; OracleConnection OConnexion = new OracleConnection(); OConnexion.ConnectionString = Ochaine; string cmdtxt = "SELECT * FROM etudiant"; try { OConnexion.Open(); Console.WriteLine("Connexion Oracle ouverte"); OracleCommand query = new OracleCommand(); query.Connection = OConnexion; query.CommandText = cmdtxt; OracleDataReader reader; reader = query.ExecuteReader(); while (reader.Read()) { Console.WriteLine(reader[0].ToString()); } OConnexion.Close(); Console.WriteLine("Connexion Oracle fermée"); } catch (Exception e) { Console.WriteLine(e); } Console.WriteLine(""); //-----------------En modèle indépendant----------------------------------------------- try { DbConnection connec = DataProvider.CreateConnection(); Console.WriteLine("Connexion Ok"); DbCommand cmd = DataProvider.CreateCommand(cmdtxt); DbDataReader reader = DataProvider.CreateDataReader(cmd); while(reader.Read()) { Console.WriteLine(reader[0].ToString()); } } catch(Exception e) { Console.WriteLine(e); } } } public class DataProvider { private static DbProviderFactory factory = DbProviderFactories.GetFactory("Oracle.DataAccess.Client"); public static DbConnection CreateConnection() { DbConnection connection = factory.CreateConnection(); connection.ConnectionString = ConfigurationManager.ConnectionStrings["ConnexionOracle"].ConnectionString; connection.Open(); return connection; } public static DbCommand CreateCommand(string commandText) { DbCommand command = CreateConnection().CreateCommand(); command.CommandText = commandText; return command; } public static DbDataReader CreateDataReader(string commandText) { return CreateCommand(commandText).ExecuteReader(System.Data.CommandBehavior.CloseConnection); } public static DbDataReader CreateDataReader(DbCommand command) { return command.ExecuteReader(System.Data.CommandBehavior.CloseConnection); } public static DataSet CreateDataSet(string commandText) { DbDataAdapter adapter = factory.CreateDataAdapter(); adapter.SelectCommand = CreateCommand(commandText); DataSet ds = new DataSet(); adapter.Fill(ds); adapter.SelectCommand.Connection.Close(); return ds; } } }
Pour cette 1ère partie, j'ai téléchargé et installé le client Oracle (Oracle Universal Installer), j'ai ensuite rajouté la référence "Oracle.DataAccess.dll" au projet, et "using Oracle.DataAccess.Client" dans le code.
Pour la 2ème partie, j'ai copié/collé la classe "DataProvider" du tuto et j'ai remplacé :
par
Code : Sélectionner tout - Visualiser dans une fenêtre à part private static DbProviderFactory factory = DbProviderFactories.GetFactory("System.Data.SqlClient");
et
Code : Sélectionner tout - Visualiser dans une fenêtre à part private static DbProviderFactory factory = DbProviderFactories.GetFactory("Oracle.DataAccess.Client");
par
Code : Sélectionner tout - Visualiser dans une fenêtre à part connection.ConnectionString = ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString;
J'ai créé un fichier App.config :
Code : Sélectionner tout - Visualiser dans une fenêtre à part connection.ConnectionString = ConfigurationManager.ConnectionStrings["ConnexionOracle"].ConnectionString;
Le connexionString de mon fichier App.config est un copié/coller de ma variable Ochaine de la 1ère partie de mon code.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 <?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> </configSections> <connectionStrings> <add name="ConnexionOracle" connectionString="Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.0.2)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=XE)));User Id=Damien;Password=Damien;Connection Lifetime=120;Persist Security Info=False;" providerName="Oracle.DataAccess.Client" /> </connectionStrings> </configuration>
C'est la 1ère fois que je tente d'utiliser un modèle indépendant du type de bases de données, si quelqu'un pouvait me débloquer, ce serait sympa
Partager