sql >> Database >  >> RDS >> Oracle

Kunnen we 2 verschillende Oracle-afhankelijkheid hebben van 2 verschillende databases in een enkele asp.net-toepassing?

ten eerste kan deze stapsgewijze handleiding uw probleem oplossen:Oracle-afhankelijkheidsgids

Ten tweede is dit ook een ander werk dat je kunt gebruiken om je werk te doen. Ja, dat kan. Uw Database-laag moet 2 klassen bevatten die verbinding maken met de respectieve database. Gebruik geen ExecuteReader , gebruik in plaats daarvan DataAdapter omdat het Connection.Open(), Close(), Dispose() zelf afhandelt.

bijvoorbeeld

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

Maar je kunt ook 1 klasse in je databaselaag houden, waardoor deze toegankelijk wordt voor 2 databases, het zou er ongeveer zo uitzien:

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

Je kunt een methode toevoegen aan de klassen/klasse die ik hierboven heb geschreven met logica om een ​​melding terug te sturen bij wijziging van de verbinding, en deze vervolgens gebruiken zoals je wilt.




  1. DATE_FORMAT binnen een query in CodeIgniter met Active Record werkt niet

  2. Postgres:hoe converteer ik een json-tekenreeks naar tekst?

  3. Undefined index:gebruikersnaam in C:\wamp\www\Website\storeadmin\admin_login.php..en hetzelfde voor wachtwoord

  4. mysql-structuur voor opmerkingen en reacties op opmerkingen