Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Czy możemy mieć 2 różne zależności Oracle z 2 różnych baz danych w jednej aplikacji asp.net?

po pierwsze ten przewodnik krok po kroku może rozwiązać Twój problem:Przewodnik po zależnościach Oracle

Po drugie, jest to również kolejna praca, którą możesz wykorzystać do wykonywania swojej pracy. Tak, może być. Twoja warstwa bazy danych powinna zawierać 2 klasy, które połączą się z odpowiednią bazą danych. Dodatkowo nie używaj ExecuteReader , zamiast tego użyj DataAdapter ponieważ obsługuje samo Connection.Open(), Close(), Dispose().

na przykład

BAZA DANYCH1.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;
    }
}

BAZA DANYCH2.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;
    }
}

Ale możesz również zachować 1 klasę w swojej warstwie bazy danych, dzięki czemu będzie dostępna dla 2 baz danych, wyglądałoby to mniej więcej tak:

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;
        }
    }

Możesz dodać metodę do klasy/klasy, o której napisałem powyżej, z logiką, aby zwrócić powiadomienie o zmianie połączenia, a następnie użyć jej tak, jak ci się podoba.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Procedura składowana generatora liczb losowych Oracle bez użycia DBMS_RANDOM

  2. Oracle SQL Developer 21.4.2 i SQLcl 21.4.1 są już dostępne

  3. Kolumna zwrotu Oracle SQL obliczona z istniejących kolumn

  4. Porównanie z datą w Oracle sql

  5. Jak wyeksportować wyniki zapytania do pliku CSV w programie SQL Developer (Oracle)