Se connecter à une BDD sur serveur (via internet) dans un programme en C#.

Vadorequest Messages postés 4 Date d'inscription samedi 16 avril 2011 Statut Membre Dernière intervention 26 juillet 2014 - 28 avril 2011 à 01:58
Vadorequest Messages postés 4 Date d'inscription samedi 16 avril 2011 Statut Membre Dernière intervention 26 juillet 2014 - 28 avril 2011 à 11:18
Bonsoir !

Jusqu'à présent je me connectais à des BDD en local sur ma machine, ce qui donnait se code ci:
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.OleDb;
using System.Linq;
using System.Text;
using DooJet.Couche_Metier;

namespace DooJet.Couche_Donnees
{
    class CAD
    {

        private string rq_sql;
        private string cnx;
        private string rows;
        private System.Data.OleDb.OleDbConnection oCNX;
        private System.Data.OleDb.OleDbCommand oCMD;
        private System.Data.OleDb.OleDbDataAdapter oDA;
        private System.Data.DataSet oDS;

        public CAD()
        {
            this.rq_sql = null;
            this.rows = null;
            this.cnx = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=G:\Jeux\Bakoro\Moi\Logiciels\Calculateur de PVs\BDD\BDD.accdb";
            this.oCNX = new OleDbConnection(this.cnx);
            this.oCMD = null;
            this.oDA = null;

        }

        /// <summary>
        /// Le message doit être sous la forme {string rq_sql, string rows}, 2 cases utilisées par GetRows. Getrows renvoit un oDS.
        /// </summary>
        /// 


        /// <returns></returns>
        public System.Data.DataSet m_GetRows(Struct_MSG msg)
        {
            this.rq_sql = (string)msg.Data[0];
            this.rows = (string)msg.Data[1];
            this.oDS = new DataSet();
            this.oCMD = new OleDbCommand(this.rq_sql, this.oCNX);
            this.oDA = new OleDbDataAdapter(this.oCMD);
            this.oDA.Fill(this.oDS, this.rows);

            return this.oDS;
        }

        /// <summary>
        /// Le message doit être sous la forme {string rq_sql}, 1 case utilisée seulement par ActionRows. ActionRows ne renvoit rien.
        /// </summary>
        /// 


        public void m_ActionRows(Struct_MSG msg)
        {
            this.rq_sql = (string)msg.Data[0];
            this.oCMD = new OleDbCommand(this.rq_sql, this.oCNX);
            this.oCNX.Open();
            this.oCMD.ExecuteNonQuery();
            this.oCNX.Close();


        }
    }
}


Ca fonctionnait parfaitement.
J'ai tenté de simplement modifier la source comme cela:
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.OleDb;
using System.Linq;
using System.Text;
using DooJet.Couche_Metier;

namespace DooJet.Couche_Donnees
{
    class CAD
    {

        private string rq_sql;
        private string cnx;
        private string rows;
        private System.Data.OleDb.OleDbConnection oCNX;
        private System.Data.OleDb.OleDbCommand oCMD;
        private System.Data.OleDb.OleDbDataAdapter oDA;
        private System.Data.DataSet oDS;

        public CAD()
        {
            this.rq_sql = null;
            this.rows = null;
            this.cnx = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=ftp://vadorequest@ftp.demo1g.ovh.org/Bakoro/BDD.accdb";
            this.oCNX = new OleDbConnection(this.cnx);
            this.oCMD = null;
            this.oDA = null;

        }

        /// <summary>
        /// Le message doit être sous la forme {string rq_sql, string rows}, 2 cases utilisées par GetRows. Getrows renvoit un oDS.
        /// </summary>
        /// 


        /// <returns></returns>
        public System.Data.DataSet m_GetRows(Struct_MSG msg)
        {
            this.rq_sql = (string)msg.Data[0];
            this.rows = (string)msg.Data[1];
            this.oDS = new DataSet();
            this.oCMD = new OleDbCommand(this.rq_sql, this.oCNX);
            this.oDA = new OleDbDataAdapter(this.oCMD);
            this.oDA.Fill(this.oDS, this.rows);

            return this.oDS;
        }

        /// <summary>
        /// Le message doit être sous la forme {string rq_sql}, 1 case utilisée seulement par ActionRows. ActionRows ne renvoit rien.
        /// </summary>
        /// 


        public void m_ActionRows(Struct_MSG msg)
        {
            this.rq_sql = (string)msg.Data[0];
            this.oCMD = new OleDbCommand(this.rq_sql, this.oCNX);
            this.oCNX.Open();
            this.oCMD.ExecuteNonQuery();
            this.oCNX.Close();


        }
    }
}


Mais ca me dit chemin incorrect.

Je voudrais savoir ce que je dois faire pour établir une connexion, en sachant que mon serveur me demandera un login/mdp. (chose dont je n'avais pas besoin de mettre dans le code auparavant !)

Je vous remercie par avance de votre aide !

Bonne nuit ;)

3 réponses

dodo7263 Messages postés 614 Date d'inscription mercredi 10 septembre 2008 Statut Membre Dernière intervention 9 février 2017 6
28 avril 2011 à 10:01
Salut,

voici quelques liens qui pourront peut-être t'aiguiller...

ici
et la

bonne continuation

[b]"Chez ceux qui semblent très vertueux se cachent en général la vanité, l'orgueil, l'intolérance".

P.Coehlo (Maktub 2004)/b
0
Vadorequest Messages postés 4 Date d'inscription samedi 16 avril 2011 Statut Membre Dernière intervention 26 juillet 2014
28 avril 2011 à 10:20
Merci, je m'en vais de ce pas éplucher tout cela.
0
Vadorequest Messages postés 4 Date d'inscription samedi 16 avril 2011 Statut Membre Dernière intervention 26 juillet 2014
28 avril 2011 à 11:18
Yop, alors j'ai téléchargé la .dll qui gère les connections FTP.

Mon code est à présent cela:
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.OleDb;
using System.Linq;
using System.Text;
using DooJet.Couche_Metier;
using EnterpriseDT.Net.Ftp;

namespace DooJet.Couche_Donnees
{
    class CAD
    {

        private string rq_sql;
        private string cnx;
        private string rows;
        private System.Data.OleDb.OleDbConnection oCNX;
        private System.Data.OleDb.OleDbCommand oCMD;
        private System.Data.OleDb.OleDbDataAdapter oDA;
        private System.Data.DataSet oDS;
        private FTPConnection oFTPConnection;

        public CAD()
        {
            this.rq_sql = null;
            this.rows = null;
            //this.cnx = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=G:\Jeux\Bakoro\Moi\Logiciels\Calculateur de PVs\BDD\BDD.accdb";
            this.oCNX = new OleDbConnection(this.cnx);
            this.oCMD = null;
            this.oDA = null;
            this.oFTPConnection = new FTPConnection();
            oFTPConnection.ServerAddress = "ftp://vadorequest@ftp.demo1g.ovh.org/BDD.accdb";// Est-ce le bon format ?
            oFTPConnection.UserName = "xxx";
            oFTPConnection.Password = "xxx";
            oFTPConnection.
        }

        /// <summary>
        /// Le message doit être sous la forme {string rq_sql, string rows}, 2 cases utilisées par GetRows. Getrows renvoit un oDS.
        /// </summary>
        /// 


        /// <returns></returns>
        public System.Data.DataSet m_GetRows(Struct_MSG msg)
        {
            this.rq_sql = (string)msg.Data[0];
            this.rows = (string)msg.Data[1];
            this.oDS = new DataSet();
            this.oCMD = new OleDbCommand(this.rq_sql, this.oCNX);
            this.oDA = new OleDbDataAdapter(this.oCMD);
            this.oDA.Fill(this.oDS, this.rows);

            return this.oDS;
        }

        /// <summary>
        /// Le message doit être sous la forme {string rq_sql}, 1 case utilisée seulement par ActionRows. ActionRows ne renvoit rien.
        /// </summary>
        /// 


        public void m_ActionRows(Struct_MSG msg)
        {
            this.rq_sql = (string)msg.Data[0];
            this.oCMD = new OleDbCommand(this.rq_sql, this.oCNX);
            this.oCNX.Open();
            this.oCMD.ExecuteNonQuery();
            this.oCNX.Close();


        }
    }
}


Donc à présent en tout logique il me reste plus qu'à ouvrir/fermer la connexion. Mais je sais pas trop comment je vais pouvoir écrire dans la BDD, le fait d'utiliser un FTP ne change rien ? J'ai épluché l'aide du manuel fournit avec la .dll et je n'ai rien trouvé à ce sujet :/
Quand est-ce que j'ouvre la connexion ? dans mes méthodes actionRows/Getrows ?(comme avant donc et je les ferme juste après)

Je ne pense pas être très loin de la solution mais j'y suis point encore...

Je vais tenter d'ouvrir/fermer les connexion au serveur dans mes méthodes, faire des tests de connexion etc...
Si de votre coté vous avez une solution, je suis preneur ;)
Merci.
0
Rejoignez-nous