Bonjour Andalor.
Pour utiliser une base de donnée MySQL avec ton serveur RunUO tu as deux choix selon l'accès que tu as à ta base de données.
1) Si tu peux faire des accès extérieurs à ta base de donnée ou si ton site et ton serveur RunUO cohabite sur le même host/serveur/machine :
Voici un exemple pour ce cas là.
- Code:
-
using System;
using System.Data;
using System.Data.Odbc;
namespace Server.Connector
{
/**
* NOTE IMPORTANTE
*
* CETTE METHODE FONCTIONNE AVEC LES SERVEURS AUTORISANT LES CONNECTIONS EXTERNES A LA BASE DE DONNEES
*/
// Cette classe sert à entourer les traitements avec la base de données.
public class DatabaseConnector
{
// Handler pour la base de données
public delegate void DatabaseRequestHandler(OdbcDataReader dataReader, object arguments);
// Attention : l'installation de http://dev.mysql.com/downloads/connector/odbc/5.1.html est nécessaire.
public static System.Data.Odbc.OdbcConnection GetConnection()
{
string connStr = "DRIVER={MySQL ODBC 5.1 Driver};SERVER=ton.serveur.data;UID=ton_login;DATABASE=la_database;Password=ton_password";
System.Data.Odbc.OdbcConnection oConn = new System.Data.Odbc.OdbcConnection(connStr);
return oConn;
}
// Envoie un GET vers la base de données pour lire des données. Les données retournés pourront être traités par le
// handler avant d'être fermée.
public static void SendGet(string request, DatabaseRequestHandler handler, object arguments)
{
System.Data.Odbc.OdbcConnection oConn = GetConnection();
try
{
oConn.Open();
// Query et autres
Console.WriteLine("Successfully connected to the database");
OdbcCommand oComm = new OdbcCommand();
oComm.Connection = oConn;
oComm.CommandText = request;
OdbcDataReader oReader = oComm.ExecuteReader(CommandBehavior.CloseConnection);
// Demander au delegate de traiter les données
handler(oReader, arguments);
}
catch (OdbcException caught)
{
// Traitement de l'erreur
Console.WriteLine(caught.Message);
Console.Read();
}
finally
{
oConn.Close();
oConn = null;
}
}
}
}
2) Si ton serveur RunUO et ton site sont sur des hosts/serveurs/machines différentes et que tu n'a pas d'accès via l'extérieur à ta base de donnée MySQL :Dans ce cas là, tu va devoir créer des scripts sur ton serveur web (par exemple en PHP), que tu appelleras en y donnant des paramètres GET ou POST à partir de ton serveur RunUO. Le script étant en local il pourra alors traiter les données reçues et faire les modifications/retraits nécessaires dans la base de données.
Voici un exemple.
- Code:
-
// Create a 'WebRequest' object with the specified url.
WebRequest req = WebRequest.Create("http://www.ton-site.fr/scripts/ton_script.php?pass=x9!M1$&name=John&age=21");
// Send the 'WebRequest' and wait for response.
WebResponse res = req.GetResponse();
// Obtain a 'Stream' object associated with the response object.
Stream stream = res.GetResponseStream();
Encoding encode = Encoding.GetEncoding("utf-8");
// Pipe the stream to a higher level stream reader with the required encoding format.
StreamReader readStream = new StreamReader(stream, encode);
string response = readStream.ReadToEnd();
readStream.Close();
res.Close();
Ici, il serait utile pour vraiment sécuriser ton script, d'utiliser des "tokens" générés en fonctions de certaines valeurs pour vérifier que la requête provient bien de ton serveur RunUO. Dans le cas présent, je passe 3 paramètres au scripts php:
pass=x9!M1$
name=John
age=21Mon script php pourrait utiliser pass pour vérifier que c'est le bon pass, ensuite insérer dans la base de donnée un utilisateur qui s'appelle John et a 21 ans. Ensuite il afficherais juste OK si tout c'est bien passé ou KO s'il y a eu un soucis. Je pourrais alors récupérer ce OK ou KO ans response.
Voilà j'espère t'avoir aider et avoir été claire