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

VS2010 + Trình điều khiển Oracle:ORA-12154:TSN:không thể phân giải mã định danh kết nối được chỉ định

Giải pháp tốt nhất mà tôi tìm thấy là sử dụng thư viện Máy khách truy cập dữ liệu Oracle và bao gồm toàn bộ mục nhập tên TNS trong chuỗi kết nối. Điều này cho phép dễ dàng xuất bản dự án lên máy chủ web, ClickOnce, v.v.

Dưới đây là các bước cần thiết để thiết lập trình điều khiển Oracle hoạt động trong dự án của bạn:

1) Nhận DLL từ gói 'Nhà cung cấp dữ liệu Oracle cho .NET'

Tải xuống tệp trình cài đặt từ vị trí này: http://www.oracle. com / technetwork / themes / dotnet / index-085163.html

Tôi đã tiếp tục và cài đặt 200 MB ODAC đầy đủ với Công cụ nhà phát triển Oracle cho Visual Studio, nhưng bạn chỉ thực sự cần bốn DLL từ bản tải xuống này. (Bạn có thể giải nén chúng trực tiếp từ gói trình cài đặt, thay vì thực hiện toàn bộ quá trình cài đặt hoặc có thể một trong những bản tải xuống nhỏ hơn bao gồm tất cả chúng.)

2) Tham chiếu DLL trong dự án của bạn

Tìm kiếm thư mục cài đặt của Oracle Data Access Client và kéo bốn DLL sau vào thư mục gốc của dự án của bạn:

  • Oracle.DataAccess.dll
  • oci.dll
  • oraciicus11.dll
  • OraOps11w.dll

Đặt Sao chép vào Thư mục đầu ra thuộc tính tất cả các tệp ngoại trừ Oracle.DataAccess.dll thành Sao chép luôn .

Trong Dự án -> Thêm Tham chiếu ... , nhấp vào nút Duyệt qua và chọn tệp Oracle.DataAccess.dll.

3) Sử dụng trình điều khiển với chuỗi kết nối đầy đủ (tùy chọn)

Để không phải lo lắng về việc các tệp tên TNS được thiết lập trên các máy mà ứng dụng được triển khai, tôi đặt toàn bộ định nghĩa trong tệp như được hiển thị bởi connectionstrings.com . Nó làm cho chuỗi kết nối hơi cồng kềnh, nhưng đã loại bỏ rất nhiều vấn đề đau đầu về tệp TNS Names mà tôi đã gặp phải trước đây:

Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=servername)(PORT=‌​1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=servicename)));User Id=username;Password=********;

Đây là toàn bộ lớp tôi đã sử dụng để kiểm tra trình điều khiển:

using System;
using System.Data;
using Oracle.DataAccess.Client;

static class Program
{
    [STAThread]
    static void Main()
    {
        TestOracle();
    }

    private static void TestOracle()
    {
        string connString = 
            "Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)" + 
            "(HOST=servername)(PORT=‌​1521)))" +
            "(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=servicename)));"+ 
            "User Id=username;Password=********;";
        using (OracleConnection conn = new OracleConnection(connString))
        {
            string sqlSelect = "SELECT * FROM TEST_TABLE";
            using (OracleDataAdapter da = new OracleDataAdapter(sqlSelect, conn))
            {
                var table = new DataTable();
                da.Fill(table);

                if (table.Rows.Count > 1) 
                    Console.WriteLine("Successfully read oracle.");
            }
        }
    }
}


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách sử dụng rownum

  2. Thay thế văn bản trong một cột BLOB

  3. Làm cách nào để lấy PK tự động tăng dần từ cơ sở dữ liệu Oracle?

  4. Oracle SQL:Chọn một hàng có ngày mới nhất giữa nhiều cột

  5. Oracle không thể cập nhật lên NULL