2009-10-26 111 views
13

Thư viện/trình điều khiển tốt nhất để kết nối ứng dụng C# (.NET) với Oracle 10g và 11g là gì?
tùy chọn hiện tại mà tôi tìm thấy là:Kết nối C# với Oracle

  1. Oracle client mà đi kèm với cài đặt cơ sở dữ liệu
  2. Oracle tức thì khách hàng (mà là một chút bối rối vì nó có 6-8 phiên bản dành cho số hệ điều hành)
  3. Microsoft ODBC? (Điều này có thể được sử dụng không?)
  4. ODP.Net - là sản phẩm riêng biệt này hay nó được bao gồm trong 1. và 2.?

Ai đó có thể giải thích sự khác biệt?

Tôi đang lập kế hoạch ứng dụng C# sẽ thực hiện các hoạt động CRUD cơ bản trên cơ sở dữ liệu Oracle. Thư viện/trình điều khiển nào nhỏ nhất và dễ cài đặt nhất?

Chỉnh sửa:
Khuyến nghị chung là sử dụng ODP.Net. Bây giờ, ai đó có thể vui lòng giải thích hoặc chỉ ra câu trả lời về sự khác biệt giữa các gói cài đặt ứng dụng khách. Tôi tìm thấy 3 khách hàng khác nhau cho Oracle 11g:

  • Oracle client - trình điều khiển client gói tàu như một phần của cơ sở dữ liệu cài đặt
  • ODAC - Oracle data access components, chứa rất nhiều thứ, trong đó có ODP.Net và Oracle tức thì khách hàng
  • Oracle Instant Client cũng chứa nhiều thứ, bao gồm ODP.Net

Vì vậy, cái nào trong số đó là đủ để phát triển? Tài liệu Oracle là chi tiết đau đớn, nhưng không nói gì về sự khác biệt giữa các gói ứng dụng khách đó. Tôi sẽ đi với nhỏ nhất (Instant Client). Nó là lựa chọn tốt nhất?

Chỉnh sửa 2:
Tôi đang sử dụng Net 3.5

+0

Phiên bản nào của .net bạn đang sử dụng? – VinPepe

+1

Tôi cũng quan tâm đến câu trả lời cho câu hỏi số 4. – Greg

Trả lời

6

Để kết nối C# với oracle bạn cần một nhà cung cấp dữ liệu cho .net. Đây có thể là một trong những cách sau:

  • ODP.Net (Oracle)
  • System.Data.OracleClient (Microsoft)
  • ODBC (Oracle)
  • OLEDB (Oracle)
  • DataDirect ADO Nhà cung cấp dữ liệu cho .NET Oracle (DataDirect)
  • thể có một số nhà cung cấp khác

Tất cả của nhà cung cấp dữ liệu này cần cài đặt ứng dụng khách oracle. Không có thư viện độc lập nào như jdbc14.jar như trong java.Bạn có 2 lựa chọn triển khai một ứng dụng oracle:

  • khách hàng đầy đủ (có thể từ cài đặt cơ sở dữ liệu)
  • khách hàng ngay lập tức

ODP.Net, ODBC, OLEDB là một phần của khách hàng đầy đủ. Đây là cách "cứng" vì quá trình cài đặt phải được chạy trên mọi máy khách chạy phần mềm của bạn. Đây là nơi chứa nhiều megabyte nhất trên máy khách.
Các instant client được cung cấp trong các gói khác nhau. Đây là cách nhỏ nhất để triển khai một ứng dụng oracle.

Tôi khuyên bạn nên sử dụng ODP.Net với Oracle Instant Client, vì điều này dễ triển khai và trọng lượng rất nhẹ.

Những gói khách hàng ngay lập tức làm bạn cần:

  • phiên bản Pick 11.1.0.6.0 (hoặc mới hơn nơi ODAC được cung cấp)
  • tức thì khách hàng trọn gói - cơ bản (nếu bạn cần sự hỗ trợ ngôn ngữ đầy đủ)
  • Gói ứng dụng khách tức thì - ODAC

Có rất nhiều bài viết về lưu trữ stackover về triển khai ứng dụng khách nhanh chóng với ứng dụng C#.

EDIT: liên kết được cập nhật và các phiên bản

+0

Bởi Oracle Instance Client, bạn có nghĩa là Instant Client? –

+0

Vâng tôi đã làm. Đã chỉnh sửa nó. – Christian13467

2

lẽ tôi là sai nhưng ADO.NET đã tích hợp hỗ trợ cho Oracle. có thể cho các phiên bản cũ hơn ...

+0

System.Data.OracleClient hơi chậm và nó sẽ bị Microsoft xóa bỏ. – tuinstoel

+0

Có bây giờ tôi thấy. Nhờ chủ đề này! –

7

Microsoft sẽ deprecate không gian tên System.Client.OracleClient vì vậy tôi nghĩ tốt nhất nên sử dụng ODP.NET. Hãy chắc chắn rằng bạn tải xuống phiên bản mới nhất (ODP.NET 11g) như các phiên bản trước đã có một số vấn đề.

+0

Ngoài ra còn có sự khác biệt * đáng kể trong các chức năng chức năng có sẵn giữa ODP.NET và thư viện OracleClient (hiện không được chấp nhận). ODP.NET cung cấp khả năng truy cập tốt hơn tới cả các tính năng cơ bản và nâng cao của cơ sở dữ liệu Oracle. – LBushkin

+0

Tại sao MS không dùng nữa? – JonH

+0

@JonH Nhóm ADO.NET đã nói về nó ở đây: http://blogs.msdn.com/adonet/archive/2009/06/15/system-data-oracleclient-update.aspx –

2

Tôi nghĩ odbc quá chậm. System.Data.OracleClient hơi chậm và nó sẽ không được Microsoft chấp nhận.

Bạn có thể sử dụng nhà cung cấp của devart, có phiên bản miễn phí. Nó rất dễ triển khai. Xem tại đây http://www.devart.com/dotconnect/oracle/ Nó hỗ trợ khung thực thể.

Odp.net nhanh nhưng không hỗ trợ khung thực thể và không dễ triển khai.

+0

Cảm ơn bạn. Bạn có thể nhận xét về sự khác biệt giữa cài đặt ứng dụng khách Oracle mà tôi đã đề cập sau khi đánh dấu "Chỉnh sửa" hay không. – zendar

1

Tôi thực sự không thể nói sự khác biệt giữa các giải pháp bạn cung cấp nhưng tôi luôn sử dụng các thành phần truy cập dữ liệu Oracle từ Oracle và nó luôn hoạt động hoàn hảo.Nó có thể được tìm thấy ở đây: ODAC for Visual Studio

Điều chắc chắn là một thư viện phát triển bởi Oracle trên .NET Framework sẽ chính xác hơn nhiều so với thư viện được phát triển bởi một công ty bên ngoài Oracle. Ví dụ, liên quan đến các ngoại lệ được ném khi truy cập cơ sở dữ liệu Oracle, chúng sẽ hữu ích hơn nhiều nếu thư viện được phát triển bởi nhóm phát triển Oracle vì chúng có kiến ​​thức bổ sung về Oracle DBs.

Điều xấu là bạn sẽ có một sự phụ thuộc, vấn đề mà bạn sẽ không phải vượt qua nếu bạn chọn sử dụng .NET System.Data.OracleClient.

Hy vọng điều này sẽ hữu ích. Trân trọng.


EDIT: Gói ODAC chứa ODP và Oracle Developer Công cụ

+1

Cảm ơn. Bạn có thể biết sự khác biệt giữa gói ODAC và Instant client không? – zendar

+0

Có vẻ như Oracle Instant Client không có liên quan gì đến .NET, nó chỉ thuộc về các ứng dụng Cơ sở dữ liệu Oracle. Xem thêm tại đây: http://www.oracle.com/technology/tech/oci/instantclient/index.html – Ucodia

4

ODP.NET là nhà cung cấp tốt nhất để truy cập vào Oracle db, chủ yếu - bởi vì nó là một trong những nguồn gốc nhất, mà phân biệt nó từ ODBC bởi sau:

  • tốt hơn hiệu suất
  • ODP.NET cung cấp quyền truy cập vào chức năng Oracle tiên tiến, không có sẵn thông qua ODBC .NET
  • ODP.NET không sử dụng cầu nối truy cập dữ liệu bổ sung.

ODBC cũng có thể được sử dụng nhưng như đã đề cập ở trên, nó sẽ chậm hơn và có chức năng giới hạn.

Đối với làm việc ODP.NET bạn cần các phần mềm được liệt kê ở đây (và kể cả khách hàng oracle): http://www.oracle.com/technology/tech/windows/odpnet/faq.html#install

Hope this helps!

+0

Cảm ơn bạn. Bạn có thể xin vui lòng bình luận về phần thứ hai của câu hỏi, sau khi "Chỉnh sửa". Tôi cần trợ giúp để chọn gói ứng dụng khách "tốt nhất". – zendar

+0

Từ những người bạn đã đề cập, bạn sẽ cần gói ODAC. Nó bao gồm ODP.NET và máy khách. Cả hai đều được yêu cầu để kết nối với Db. – Alexander

1

ODP.NET là nhà cung cấp gốc để truy cập db oracle. Và do đó nó nên được tối ưu hóa tốt hơn cho oracle db. Hơn nữa, có tính năng oracle, chẳng hạn như loại REF CURSOR, không được hỗ trợ bởi MS ODBC, nhưng được hỗ trợ bởi ODP.NET. Bạn có thể tải xuống ODAC, bao gồm ODP.NET, trên trang web www.aracle.com.

Các vấn đề liên quan