Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Chúng ta có thể có 2 Sự phụ thuộc Oracle khác nhau từ 2 cơ sở dữ liệu khác nhau trong một ứng dụng asp.net không

trước hết hướng dẫn từng bước này có thể giải quyết vấn đề của bạn: Hướng dẫn phụ thuộc Oracle

Thứ hai, đây cũng là một công việc khác xung quanh bạn có thể sử dụng để thực hiện công việc của mình. Lớp Cơ sở dữ liệu của bạn nên chứa 2 lớp sẽ kết nối với cơ sở dữ liệu tương ứng. Ngoài ra, không sử dụng ExecuteReader , thay vào đó hãy sử dụng DataAdapter vì nó tự xử lý Connection.Open (), Close (), Dispose ().

ví dụ

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

Nhưng bạn cũng có thể giữ 1 lớp trong Lớp cơ sở dữ liệu của mình để làm cho nó có thể truy cập được cho 2 cơ sở dữ liệu, nó sẽ trông giống như sau:

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

Bạn có thể thêm một phương thức vào Lớp / Lớp mà tôi đã viết ở trên với logic để trả về thông báo về việc thay đổi kết nối và sau đó sử dụng nó khi bạn hài lòng.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chuyển các BLOB lớn đến quy trình được lưu trữ

  2. Centos 6 PHP OCI8 mở rộng không hoạt động (Hàm không xác định oci_connect ())

  3. Trình quản lý API WSO2:chpasswd.sh không hoạt động khi sử dụng cơ sở dữ liệu bên ngoài

  4. Oracle Forms 6i gặp sự cố với 0xC0000005 khi bắt đầu cài đặt bản vá 19

  5. Kết nối với cơ sở dữ liệu trong Pro C bằng Oracle Wallet