Dans cet exemple nous utiliserons une connexion générique (adaptable pour tout type de données)
Le but de cet article de comprendre comment il est possible d’exploiter la technologie ADO.NET afin de se connecter de façon générique à un serveur SQL distant et d’executer une requête SQL.
Nous n’utiliserons pas Linq-to-SQL.
Tout d’abord ajoutons à notre projet un fichier de configuration contenant notre chaine de connexion:
1: <?xml version="1.0" encoding="utf-8" ?>
2: <configuration>
3: <connectionStrings>
4: <add name="myConx" providerName="System.Data.SqlClient" connectionString="Data Source=.\SQLEXPRESS;
5: AttachDbFilename=C:\Documents and Settings\toto.ADMIN3B86\Bureau\northwind.mdf;
6: Integrated Security=True;Connect Timeout=30;User Instance=True"/>
7: </connectionStrings>
8: </configuration>
Et voici le code qui nous permettra de se connecter à une base de donnée distante et de remplir un composant de type datagridview :
1: DbProviderFactory monprovider = null;
2: DbConnection cnx = null;
3: try
4: {
5: //Création du provider pour créer une connection générique
6: //On utilise la chaine de caractère du provider (System.Data.SqlClient)
7: //dans App.config pour se connecter
8: //On ajoute System.Configuration dans les using (ainsi que dans les références)
9: monprovider = DbProviderFactories.GetFactory(ConfigurationManager.ConnectionStrings["myConx"].ProviderName);
10: //On se connecte en utilisant la chaine de connexion de notre fichier de configuration
11: cnx = monprovider.CreateConnection();
12: cnx.ConnectionString = ConfigurationManager.ConnectionStrings["myConx"].ConnectionString;
13: cnx.Open();
14: //Connexion
15: //On execute une requête
16: DbCommand marequete = cnx.CreateCommand();
17: marequete.CommandText = "SELECT * FROM Employees;";
18: //Notre requête SQL
19: DbDataReader resultat = marequete.ExecuteReader();
20: //On rempli la datagrid par rapport au résultat
21: DataGridView1.DataSource = resultat.GetSchemaTable();
22: }
23: catch (Exception ex)
24: {
25: MessageBox.Show(ex.Message);
26: }
27: finally
28: {
29: cnx.Close();
30: }
Mots clés Technorati :
ADO.NET,
C#