sql >> データベース >  >> RDS >> Oracle

1つのasp.netアプリケーションで2つの異なるデータベースから2つの異なるOracle依存関係を持つことはできますか?

    まず、このステップバイステップガイドで問題が解決する場合があります。Oracle依存関係ガイド

    第二に、これはあなたがあなたの仕事をするために使うことができるもう一つの回避策でもあります。データベースレイヤーには、それぞれのデータベースに接続する2つのクラスが含まれている必要があります。さらに、ExecuteReaderを使用しないでください 、代わりにDataAdapterを使用してください Connection.Open()、Close()、Dispose()自体を処理するためです。

    たとえば

    DATABASE1.CS

    public class Database1
    {
        string sCon = string.Empty;
        OracleConnection OraCon;
        protected string query = string.Empty;
        public Database1()
        {
           sCon = "Data Source=(DESCRIPTION =(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST = 1.1.1.1)(PORT = 12345)))(CONNECT_DATA =(SID = SIDNAME)));User ID=username;Password=pass;";
           OraCon = new OracleConnection(sCon);
        }
    
        protected DataTable FillDataTableByParam(OracleParameter[] param)
        {
            DataTable oDT = new DataTable();
            OracleCommand OraCom = new OracleCommand(query, OraCon);
            OraCom.Parameters.AddRange(param);
            new OracleDataAdapter(OraCom).Fill(oDT);
            query = "";
            return oDT;
        }
    }
    

    DATABASE2.CS

    public class Database2
    {
        string sCon = string.Empty;
        OracleConnection OraCon;
        protected string query = string.Empty;
        public Database2()
        {
           sCon = "Data Source=(DESCRIPTION =(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST = 1.1.1.1)(PORT = 12345)))(CONNECT_DATA =(SID = SIDNAME2)));User ID=username;Password=pass;";
           OraCon = new OracleConnection(sCon);
        }
    
        protected DataTable FillDataTableByParam(OracleParameter[] param)
        {
            DataTable oDT = new DataTable();
            OracleCommand OraCom = new OracleCommand(query, OraCon);
            OraCom.Parameters.AddRange(param);
            new OracleDataAdapter(OraCom).Fill(oDT);
            query = "";
            return oDT;
        }
    }
    

    ただし、データベースレイヤーに1つのクラスを保持して、2つのデータベースからアクセスできるようにすることもできます。次のようになります。

    public class DatabaseLayer
        {
            string sCon = string.Empty;
            OracleConnection OraCon;
            protected string query = string.Empty;
            public DatabaseLayer(string DataBaseSecureName)
            {
               if(DataBaseSecureName ==  "One")
               {
                sCon = "Data Source=(DESCRIPTION =(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST = 1.1.1.1)(PORT = 12345)))(CONNECT_DATA =(SID = SIDNAME)));User ID=username;Password=pass;";
               }
               else if (DataBaseSecureName ==  "Second")
               {
                sCon = "Data Source=(DESCRIPTION =(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST = 1.1.1.1)(PORT = 12345)))(CONNECT_DATA =(SID = SIDNAME2)));User ID=username;Password=pass;";
               }
    
               OraCon = new OracleConnection(sCon);
            }
    
            protected DataTable FillDataTableByParam(OracleParameter[] param)
            {
                DataTable oDT = new DataTable();
                OracleCommand OraCom = new OracleCommand(query, OraCon);
                OraCom.Parameters.AddRange(param);
                new OracleDataAdapter(OraCom).Fill(oDT);
                query = "";
                return oDT;
            }
        }
    

    接続の変更時に通知を返すロジックを使用して、上記で記述したクラス/クラスにメソッドを追加し、それを好きなように使用できます。




    1. Azure SQLデータベースのDTUとは何か、必要な量を把握する方法

    2. pdoexecutegiveのエラー

    3. AWS RDSの問題を解決する方法:psycopg2.OperationalError:致命的:ユーザーrootのパスワード認証に失敗しました

    4. MonoUbuntuでMySql用の.NetFrameworkデータプロバイダーの存在を見つける方法は?