C# connexion a une base de donnés sql

Résolu/Fermé
gorgibus Messages postés 15 Date d'inscription samedi 18 octobre 2008 Statut Membre Dernière intervention 26 octobre 2008 - 18 oct. 2008 à 20:20
gorgibus Messages postés 15 Date d'inscription samedi 18 octobre 2008 Statut Membre Dernière intervention 26 octobre 2008 - 23 oct. 2008 à 20:22
Bonjour,

Je cherche à savoir comment accéder a ma base de donné free.fr en C#.
Pourriez vous me donner le code me permettant de faire des requêtes sql ?
Et comment récupérer ces informations aussi ?

Je pense que l'url pour accéder a la base de donné de free est sql.free.fr

J'ai cherché déjà un peu partout mais je n'ai rien trouvé pour mon cas bien précis.

Merci d'avance

6 réponses

Elx Messages postés 11 Date d'inscription mardi 30 septembre 2008 Statut Membre Dernière intervention 31 octobre 2008 71
19 oct. 2008 à 08:18
Salut

Malheureusement free, comme beaucoup de prestataire, verrouille l'accès à sa base de données depuis un logiciel externe. Personnellement j'utilise une base de données construite à partir du site https://www.db4free.net/ Comme free, il s'agit d'une base de type MySql, mais on peut y accéder à partir d'un site web, en php par exemple, et à partir d'un logiciel externe.

Concernant particulièrement le C#, tu peux télécharger un exemple que j'ai mis sur mon serveur:
http://www.artweweb.com/Forum/MySQlCSharp.zip

Voici comment j'ai procédé:

1. Téléchargement du composant .NET pour MySQL:
Il faut tout d'abord télécharger et installer un composant permettant d'accéder à une base de données MySql avec des fonctions dot net simples. Voici le lien:
https://www.mysql.com/products/connector/

2. Ajout de la référence MySql.Data au projet
Il faut rajouter cette référence, comme n'importe quel autre composant .NET. Si tu n'as pas changer les paramètres d'installation du module MySQL pour .NET, le composant se trouve dans le dossier:
C:\Program Files\MySQL\MySQL Connector Net 1.0.10.1\Binaries\.NET 1.1

3. Connexion à la base de donnée

Il faut créer une chaine de caractères incluant tous les paramètres de connexion à la base. Exemple:
string connStr = "server=db4free.net; user id=emploi; password=mypass; database=agbe; pooling=false";
Cette chaine permet de se connecter à la base de données "agbe", sur le serveur db4free.net avec l'identifiant "emploi" et le mot de passe "myPass".
Pour se connecter, il suffit de créer une variable MySql.Data.MySqlClient.MySqlConnection avec comme paramètre la chaine ci-dessus:
MySql.Data.MySqlClient.MySqlConnection=new MySql.Data.MySqlClient.MySqlConnection( connStr );

4. Chargement d'une table de la base
Il existe de nombreuses méthodes, je t'en propose une:
Création d'une requête SQL:
string mySelectQuery = "SELECT * FROM table 1"
Ici, on sélection tous les enregistrements de la table "table 1".
Création d'un adaptateur paramétré par la requête sql et la variable MySql.Data.MySqlClient.MySqlConnection:
MySql.Data.MySqlClient.MySqlDataAdapter AdapTable=new MySql.Data.MySqlClient.MySqlDataAdapter(mySelectQuery,m_conn);

Création d'un dataset permettant de recevoir, entre autres, une table et ses données:
System.Data.DataSet DtSet=new System.Data.DataSet();
Maintenant on remplit le dataset avec le résultat de la requête:
AdapTable.Fill(DtSet, ((char)0).ToString());

Et voila la table:
System.Data.DataTable MaTable=DtSet.Tables[0];

J'ai aussi fait une petite page php qui permet d'afficher les données de la table 1:
http://www.artweweb.com/Forum/DonneesTable1.php

Voila, j'espère avoir été utile.

Elx
http://www.artweweb.com/
14
Elx Messages postés 11 Date d'inscription mardi 30 septembre 2008 Statut Membre Dernière intervention 31 octobre 2008 71
19 oct. 2008 à 19:02
Salut

1. Lecture des enregistrements d'une table en C#
Il existe plusieurs méthodes pour récupérer les enregistrements d’une table en C#.

Je t’en propose une qui me semble assez proche du langage php :

int id;
string mail;
string message;
System.DateTime date;
System.DateTime time;

foreach(System.Data.DataRow row in MaTable.Rows)
{
id=(int)row[0];
mail=(string)row[1];
message=(string)row[2];
date=(System.DateTime)row[3];
time=(System.DateTime)row[4];
}


2. Ajout d'enregistrements à une table en C#

Il existe plusieurs méthodes, je te propose celle qui me semble la plus simple.
Supposons que la requête est de la forme:
string mySqlQuery = "INSERT INTO table1(.....) VALUES ...."
On va créer un objet MySqlCommand qui définit une action sur la base de données et prend comme paramètre la requête sous forme d'une chaine et un objet MySql.Data.MySqlClient.MySqlConnection qui correspond à la connexion à la base:
MySql.Data.MySqlClient.MySqlCommand sqlCmd=new MySql.Data.MySqlClient.MySqlCommand(mySqlQuery ,m_conn);
L'execution de l'action se fait par l'appel de la fonction ExecuteNonQuery():
sqlCmd.ExecuteNonQuery();
C'est tout !


Voila, J'espère que cela te serra utile

Elx
http://www.artweweb.com/
9
gorgibus Messages postés 15 Date d'inscription samedi 18 octobre 2008 Statut Membre Dernière intervention 26 octobre 2008 7
19 oct. 2008 à 14:53
Merci de la réponse très claire.
J'ai bien réussi a me connecté a ma base de donnés par contre je ne vois pas bien comment récupérer mes informations avec ceci System.Data.DataTable MaTable=DtSet.Tables[0]; ?
La table contiendra 5 champs : id, mail, message, date, heure.
Si cela pouvait ressembler au php lorsque on utilise while puis l'assoiation des resultat a une table ça serait formidable.

Pour l'ajout de donné dans la base que dois-je écrire ? (pour la requête ça ne me pose aucun problème mais comment l'envoyer ?)


Merci encore pour l'aide. Ça faisait un moment que j'essayais de me connecter à ma table sur free en vain !
5
Elx Messages postés 11 Date d'inscription mardi 30 septembre 2008 Statut Membre Dernière intervention 31 octobre 2008 71
20 oct. 2008 à 05:19
Salut

Il suffit d'ouvrir la connexion après sa création:

string connStr = "server=db4free.net; user id=pseudo; password=pass; database=gorgibus69; pooling=false";
MySql.Data.MySqlClient.MySqlConnection m_conn = new MySql.Data.MySqlClient.MySqlConnection(connStr);

m_conn .Open();

string mySqlQuery = "INSERT INTO test (id, mail, message, date, time) VALUES (NULL, 'Mail', 'Message', '2008-02-05', '11:11:11');";
MySql.Data.MySqlClient.MySqlCommand sqlCmd = new MySql.Data.MySqlClient.MySqlCommand(mySqlQuery, m_conn);
sqlCmd.ExecuteNonQuery();

il ne faut pas oublier de la fermer lorsque l'accès à la base n'est plus nécessaires:
m_conn .Close();



Elx
http://www.artweweb.com/
4

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
gorgibus Messages postés 15 Date d'inscription samedi 18 octobre 2008 Statut Membre Dernière intervention 26 octobre 2008 7
19 oct. 2008 à 22:39
Merci encore !

C'est exactement ce que je cherchais pour la lecture des tables. Le seul problème c'est qu'il ma fallu changer le type de variables de date et time en string sinon une erreur était généré est-ce normale ?

Pour l'ajout de donnés, cela ne marche pas. Arrivée à sqlCmd.ExecuteNonQuery(); le compilateur me met comme erreur «Connection must be valid and open».

string connStr = "server=db4free.net; user id=pseudo; password=pass; database=gorgibus69; pooling=false";
MySql.Data.MySqlClient.MySqlConnection m_conn = new MySql.Data.MySqlClient.MySqlConnection(connStr);
string mySqlQuery = "INSERT INTO test (id, mail, message, date, time) VALUES (NULL, 'Mail', 'Message', '2008-02-05', '11:11:11');";
MySql.Data.MySqlClient.MySqlCommand sqlCmd = new MySql.Data.MySqlClient.MySqlCommand(mySqlQuery, m_conn);
sqlCmd.ExecuteNonQuery();


Ai-je fais une erreur ?
2
gorgibus Messages postés 15 Date d'inscription samedi 18 octobre 2008 Statut Membre Dernière intervention 26 octobre 2008 7
23 oct. 2008 à 20:22
Bonsoir à tous,

Je fais un add-on pour msn et j'ai essayé de communiquer avec une base de donné en vain.
Le message d'erreur 8013150a s'affiche de que l'addon tente de se connecter à ma base de donné.
J'ai lu ici http://forum.mess.be/index.php?showtopic=19229 que cela viendrait du fait que je ne peut pas communiquer a internet avec l'addon.
Puis-je faire quelque chose pour résoudre mon problème ?
0