OVH Community, votre nouvel espace communautaire.

[C#] connecter programme à la base


goulloux
25/02/2011, 00h52
Bon bas bingo, j'avais presque tout bon, ca coinçais uniquement au niveau de la redirection de port...
En fait il faut inverser les valeurs, rediriger les ports mysql vers le serveur mysql ovh ("mysql5-9.xxx") et ensuite utiliser localhost comme connectionstring ...

Merci pour l'aide, et j’espère que ca aidera d'autre personne

Pizza Royale
24/02/2011, 15h57
Citation Envoyé par goulloux
héhé merci, j'ai effectivement recupérer ce même POC sur internet (sshtunnel)
Et je crois que là ou j'ai raté le coche c'est au niveau du portforwarding
En revanche tu mets "mysql5-9" et pas "mysql5-9.business" (ou .xxx)
Normal ?

Je testerais ca chez moi ce soir
Merci encore
Chez moi je l'appelle comme ça. C'est une base qui date d'avant le changement d'offre 240->Business. Le nom doit être le même que quand on fait la sauvegarde en ligne par phpMyAdmin (tel qu'il apparait dans la liste déroulante lors de la sélection de la base dans le manager).

goulloux
24/02/2011, 15h43
Citation Envoyé par Pizza Royale
Ce n'est évidemment pas du code de production, à vous de vous débrouiller avec les bugs, à le comprendre et ne comptez pas sur moi pour faire votre boulot !


Code PHP:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using System.Net;
using System.Net.Sockets;
using System.Globalization;
using Tamir.SharpSsh.jsch;
using MySql.Data.MySqlClient;

// sharpSSH - http://sourceforge.net/projects/sharpssh
// MySql Connector/Net 5.0 - http://dev.mysql.com/downloads/connector/net/5.0.html
// doc MySql Connector/Net 5.0 http://dev.mysql.com/doc/refman/5.0/en/connector-net-tutorials-intro.html


namespace MySQL
{
    public class 
MyUserInfo UserInfo
    
{
        
// Holds the user password
        
private String passwd;

        
// Returns the user password
        
public String getPassword() { return passwd; }

        
// Prompt the user for a Yes/No input
        
public bool promptYesNo(String str)
        {
            return 
true;
        }

        
// Returns the user passphrase (passwd for the private key file)
        
public String getPassphrase() { return null; }

        
// Prompt the user for a passphrase (passwd for the private key file)
        
public bool promptPassphrase(String message) { return true; }

        
// Prompt the user for a password
        
public bool promptPassword(String message) { return true; }

        
// Shows a message to the user
        
public void showMessage(String message) { }
    }

    class 
Program
    
{
        static 
void Main(string[] args)
        {
            
Session session;
            
MySqlConnection conn null;

            try
            {
                
//Create a new JSch instance
                
JSch jsch = new JSch();//Create a new SSH session
                
string host "nom_domaine_ovh.com"//url
                
string user "nom_compte_client_ovh"//ssh username
                
string pass "mot_de_passe_ssh_ovh"//ssh password
                
int sshPort 22//ssh port
                
int rPort 3306;
                
int lPort 3306;
                
int port Convert.ToInt32(sshPort);

                
session jsch.getSession(userhostport);
                
session.setHost(host);
                
session.setPassword(pass);
                
UserInfo ui = new MyUserInfo();
                
session.setUserInfo(ui);
                
session.connect();

                
//Set port forwarding on the opened session
                
session.setPortForwardingL(lPort"mysql5-9"rPort);
                if (
session.isConnected())
                {
                    try
                    {
                        
string dbhost "localhost";
                        
string dbuser "nom_de_la_base_ovh";
                        
string dbpass "mot_de_passe_de_la_base";
                        
string dbdatabase "nom_de_la_base_ovh";
                        
string connStr String.Format("server={0};user id={1};    password={2}; database={3}; pooling=false",
                            
dbhostdbuserdbpassdbdatabase);

                        
// Create a MySql Connection
                        
conn = new MySqlConnection(connStr);
                        
conn.Open();
                        
conn.ChangeDatabase(dbdatabase);

                        
string sql "SELECT email, lang FROM emails";
                        
MySqlCommand cmd = new MySqlCommand(sqlconn);
                        
MySqlDataReader rdr cmd.ExecuteReader();

                        while (
rdr.Read())
                        {
                            
Console.WriteLine(rdr[0] + " lang: " rdr[1]);
                        }

                        
conn.Close();
                    }
                    catch (
Exception ex)
                    {
                        
// failed
                    
}
                    
session.disconnect();
                }
            }
            catch (
Exception ex)
            {
            }
        }
    }

héhé merci, j'ai effectivement recupérer ce même POC sur internet (sshtunnel)
Et je crois que là ou j'ai raté le coche c'est au niveau du portforwarding
En revanche tu mets "mysql5-9" et pas "mysql5-9.business" (ou .xxx)
Normal ?

Je testerais ca chez moi ce soir
Merci encore

Pizza Royale
24/02/2011, 14h29
Citation Envoyé par goulloux
Ok merci pour les infos
Sinon dans l'éventualité ou tu aurais encore les sources de ton code
Je suis preneur
Ce n'est évidemment pas du code de production, à vous de vous débrouiller avec les bugs, à le comprendre et ne comptez pas sur moi pour faire votre boulot !


Code PHP:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using System.Net;
using System.Net.Sockets;
using System.Globalization;
using Tamir.SharpSsh.jsch;
using MySql.Data.MySqlClient;

// sharpSSH - http://sourceforge.net/projects/sharpssh
// MySql Connector/Net 5.0 - http://dev.mysql.com/downloads/connector/net/5.0.html
// doc MySql Connector/Net 5.0 http://dev.mysql.com/doc/refman/5.0/en/connector-net-tutorials-intro.html


namespace MySQL
{
    public class 
MyUserInfo UserInfo
    
{
        
// Holds the user password
        
private String passwd;

        
// Returns the user password
        
public String getPassword() { return passwd; }

        
// Prompt the user for a Yes/No input
        
public bool promptYesNo(String str)
        {
            return 
true;
        }

        
// Returns the user passphrase (passwd for the private key file)
        
public String getPassphrase() { return null; }

        
// Prompt the user for a passphrase (passwd for the private key file)
        
public bool promptPassphrase(String message) { return true; }

        
// Prompt the user for a password
        
public bool promptPassword(String message) { return true; }

        
// Shows a message to the user
        
public void showMessage(String message) { }
    }

    class 
Program
    
{
        static 
void Main(string[] args)
        {
            
Session session;
            
MySqlConnection conn null;

            try
            {
                
//Create a new JSch instance
                
JSch jsch = new JSch();//Create a new SSH session
                
string host "nom_domaine_ovh.com"//url
                
string user "nom_compte_client_ovh"//ssh username
                
string pass "mot_de_passe_ssh_ovh"//ssh password
                
int sshPort 22//ssh port
                
int rPort 3306;
                
int lPort 3306;
                
int port Convert.ToInt32(sshPort);

                
session jsch.getSession(userhostport);
                
session.setHost(host);
                
session.setPassword(pass);
                
UserInfo ui = new MyUserInfo();
                
session.setUserInfo(ui);
                
session.connect();

                
//Set port forwarding on the opened session
                
session.setPortForwardingL(lPort"mysql5-9"rPort);
                if (
session.isConnected())
                {
                    try
                    {
                        
string dbhost "localhost";
                        
string dbuser "nom_de_la_base_ovh";
                        
string dbpass "mot_de_passe_de_la_base";
                        
string dbdatabase "nom_de_la_base_ovh";
                        
string connStr String.Format("server={0};user id={1};    password={2}; database={3}; pooling=false",
                            
dbhostdbuserdbpassdbdatabase);

                        
// Create a MySql Connection
                        
conn = new MySqlConnection(connStr);
                        
conn.Open();
                        
conn.ChangeDatabase(dbdatabase);

                        
string sql "SELECT email, lang FROM emails";
                        
MySqlCommand cmd = new MySqlCommand(sqlconn);
                        
MySqlDataReader rdr cmd.ExecuteReader();

                        while (
rdr.Read())
                        {
                            
Console.WriteLine(rdr[0] + " lang: " rdr[1]);
                        }

                        
conn.Close();
                    }
                    catch (
Exception ex)
                    {
                        
// failed
                    
}
                    
session.disconnect();
                }
            }
            catch (
Exception ex)
            {
            }
        }
    }


goulloux
24/02/2011, 12h56
Citation Envoyé par Pizza Royale
Tu te connectes avec exactement les mêmes droits que depuis du code PHP de ton compte mutualisé. Le tunnel sert justement à faire en sorte que tout soit "vu" de l'hébergement mutualisé et non pas à distance.
J'ai fait le test il y a un an sur une base de 100Mo de mon compte business, je n'ai pas réessayé depuis parce que MySQL ne me donne pas satisfaction, j'envisage un VPS ou un Kimsufi parce que le mutu Windows semble à l'abandon.
MySQL est la pire des bdd (libres ou pas), son avenir est incertain et c'est le seul choix que nous laisse OVH en mutu. Dommage.
Ok merci pour les infos
Sinon dans l'éventualité ou tu aurais encore les sources de ton code
Je suis preneur

Pizza Royale
24/02/2011, 12h06
Citation Envoyé par goulloux
C'est jouable sur un mutualisé ? Car jarrive a me connecté via Putty a ma base MySQL
Parcontre en C# je n'arrive pas a me connecté a mysql ... j'ai pu lire qu'il y avait des notions de droit sur le fichier /etc/my.cnf
Mais impossible de l'éditer (car mutualisé ??)
Tu te connectes avec exactement les mêmes droits que depuis du code PHP de ton compte mutualisé. Le tunnel sert justement à faire en sorte que tout soit "vu" de l'hébergement mutualisé et non pas à distance.
J'ai fait le test il y a un an sur une base de 100Mo de mon compte business, je n'ai pas réessayé depuis parce que MySQL ne me donne pas satisfaction, j'envisage un VPS ou un Kimsufi parce que le mutu Windows semble à l'abandon.
MySQL est la pire des bdd (libres ou pas), son avenir est incertain et c'est le seul choix que nous laisse OVH en mutu. Dommage.

goulloux
24/02/2011, 09h06
Citation Envoyé par Pizza Royale
Tu fais un tunel ssh avec la classe .Net SharpSsh pour te connecter à ton compte mutualisé (exactement comme on le fait avec Filezilla), et ensuite tu fais tes requêtes MySQL à travers la connexion SSH via setPortForwardingL qui fait un forwarding vers le serveur SQL mutualisé en utilisant partout le port 3306. Je l'ai fait, ça marche nickel. L'intérêt du tunel ssh est qu'on fait ensuite ses requêtes comme si on était en local, on ouvre la base sur localhost.

http://www.google.fr/search?q=+SharpSsh+MySQL&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:frfficial&client=firefox-a


-> Mon programme en C# tourne en local chez moi, pas sur l'hébergement OVH. Et de chez moi j'accède aux bases mutualisées.
C'est jouable sur un mutualisé ? Car jarrive a me connecté via Putty a ma base MySQL
Parcontre en C# je n'arrive pas a me connecté a mysql ... j'ai pu lire qu'il y avait des notions de droit sur le fichier /etc/my.cnf
Mais impossible de l'éditer (car mutualisé ??)

sprocket
14/02/2011, 19h26
oops, je cherchais un autre truc et tombé sur celui ci donc j'ai donné mes 2centimes mais trop vieux!
désolé pour le bump.

sprocket
14/02/2011, 19h25
Citation Envoyé par Abazada
Pourquoi ?
Sous réserve qu'il soit compilé avec les bonnes librairies, rien ne t'empêche de faire tourner un binaire sur un mutualisé.
est en plus si c'est compilé avec libraries static.... pas besoin compter sur les libraries du serveur dans ce cas là

Abazada
02/01/2011, 09h36
Citation Envoyé par Haroeris
Si c'est du mutualisé tu ne pourras pas installer de programme en C#
Pourquoi ?
Sous réserve qu'il soit compilé avec les bonnes librairies, rien ne t'empêche de faire tourner un binaire sur un mutualisé.

Daniel60
02/01/2011, 08h58
spam

pleasurnpain
08/12/2010, 15h07
ok je vais essayer ca .... sinon j'ai une question aussi par curiosité j'aurai aimer que mon programme soit "en forme de site web" (dsl pour ce terme mais je connais pas le mot technique), le truc c'est que mon programme a besoin d'ouvrir un dossier sur le desktop de l'utilisateur, on dossier que lui meme aura creer pour recevoir des stats on va dire, et c'est stats je dois les inserer dans la BDD.

quelqu'un pourrait me dire comment se nomme se genre d'applications ???

ps : si je me suis mal exprimer dsl

Pizza Royale
07/12/2010, 18h14
Sinon attendre l'hébergement mutualisé Windows, qui arrivera peut-être un jour

Pizza Royale
07/12/2010, 18h07
Tu fais un tunel ssh avec la classe .Net SharpSsh pour te connecter à ton compte mutualisé (exactement comme on le fait avec Filezilla), et ensuite tu fais tes requêtes MySQL à travers la connexion SSH via setPortForwardingL qui fait un forwarding vers le serveur SQL mutualisé en utilisant partout le port 3306. Je l'ai fait, ça marche nickel. L'intérêt du tunel ssh est qu'on fait ensuite ses requêtes comme si on était en local, on ouvre la base sur localhost.

http://www.google.fr/search?q=+SharpSsh+MySQL&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:frfficial&client=firefox-a


-> Mon programme en C# tourne en local chez moi, pas sur l'hébergement OVH. Et de chez moi j'accède aux bases mutualisées.

Gaston_Phone
07/12/2010, 16h15
Je ne pratique plus le C# depuis bien longtemps.
Aussi je laisse les autres te répondre sur ce point.

pleasurnpain
07/12/2010, 15h29
le site est en PHP mais mon programme c un executable.

et donc si je prend un hebergement dédié ?? comment ca se passe? j'aurai besoin de connaitre le nom (les termes) de se genre d'application pour pouvoir me documenter .... déja

Gaston_Phone
07/12/2010, 14h33
C'est tout à fait possible avec des scripts en PHP.

Haroeris
07/12/2010, 14h28
c'est un hébergement mutualisé ou dédié ?

Si c'est du mutualisé tu ne pourras pas installer de programme en C#

pleasurnpain
07/12/2010, 13h44
bonjour à tous,

voila j'ai créer un programme en C# je voulais tester la connexion à ma base mysql sur mon hébergement OVH mais apparemment ce n'est pas possible, on me dit qu'il faudrait que j'installe mon programme sur mon hébergement, dans l'absolu c'est ce qu'il me convient le mieux, j'aimerais que ce programme soit en relation direct avec mon site web car j'aimerais afficher des stats sur mon site, malheureusement je manque d'informations de "mot clés" sur ce type d'applications pour faire des recherche et savoir vraiment de quoi on me parle.

quelqu'un pourrait m'aiguiller déjà sur des recherche que je pourrai effectuer sur le net ??

merci