2009-07-24 145 views
7

Tôi tìm thấy câu hỏi này tại đây: OLEDB v/s ODBCSự khác nhau giữa ODBC và OleDB là gì?

Điều này đã cho tôi thêm thông tin, nhưng không thực sự trả lời câu hỏi tôi yêu cầu, vì vậy tôi sẽ tiếp tục từ đó.

Tôi đang làm việc trong C#. Tôi sẽ dành cho bạn câu chuyện dài về cách tôi đã đến câu hỏi hóc búa này, nhưng về cơ bản tôi đang cố gắng quyết định giữa ODBC và oleDB.

Chúng tôi làm việc với rất nhiều khách hàng khác nhau có cơ sở dữ liệu bao la khác nhau (một số SQL, một số oracle, một số cái gì khác mà tôi chưa bao giờ nghe nói về và không bận tâm để nhớ tên của)

Bây giờ , từ những gì tôi hiểu, ODBC đã cũ, và là/là tiêu chuẩn. Và bây giờ OleDB đã đi cùng và ... là ... khác nhau? nhưng hoàn thành cùng một điều (nó nói đến cơ sở dữ liệu)

Tại sao tôi muốn sử dụng cái này qua cái kia? ODBC là (theo bài đăng trên) nền tảng chéo, điều này rất tốt, nhưng ông cung cấp rất ít thông tin về những gì OleDB cung cấp mà ODBC không có. Trong nghiên cứu khác của tôi, tôi đã tìm thấy (trên diễn đàn MSDN) Mọi người nói "sử dụng OleDB nếu bạn có thể, nếu bạn phải, nghỉ mát đến ODBC" Đương nhiên, ba không có lý do cho điều này, vì vậy tôi muốn muốn nghe một số.

Trả lời

16

ODBC là một API C để truy cập cơ sở dữ liệu. Có một tiêu chuẩn cho nó, nó được hỗ trợ bởi tất cả các nhà cung cấp cơ sở dữ liệu lớn, nó là rất tốt tài liệu, nó là nền tảng chéo. OLEDB là một giao diện tương tự sử dụng công nghệ COM của Microsoft thay vì API C. Điều này có nghĩa là nó chỉ dễ sử dụng trên các nền tảng hỗ trợ COM.

Vào cuối ngày, cả hai thư viện đều cung cấp chức năng cơ bản gần tương đương. Thật vậy, một số trình điều khiển OLEDB thực sự sử dụng ODBC thay vì các thư viện cơ sở dữ liệu nguyên gốc.

Vì vậy, nếu bạn là nhà phát triển C#, làm việc trên Windows, OLEDB là sự lựa chọn rõ ràng giữa hai người. Nếu bạn đang sử dụng C (hoặc C++ không sử dụng COM), hoặc cần hỗ trợ đa nền tảng, thì ODBC là đặt cược tốt hơn.

0

Nếu bạn đang lập trình trong C#, bạn sẽ không trực tiếp sử dụng một trong hai. Bạn sẽ sử dụng ADO.NET ở một số dạng.

Đúng, nhà cung cấp mà bạn chỉ định trong chuỗi kết nối có thể trở thành nhà cung cấp ODBC hoặc nhà cung cấp OleDB, nhưng điều này sẽ không quan trọng đối với mã của bạn. ADO.NET sẽ cả hai API từ chế độ xem của bạn.

+0

Bạn có muốn giải thích lý do cho phiếu giảm giá không? –

+1

Tôi đã không downvote, nhưng tôi không nghĩ rằng bạn giải quyết các câu hỏi. Có rất nhiều kẻ ngốc ngoài kia - tôi đã tìm thấy nó tốt nhất chỉ để bỏ qua chúng. –

+0

Sau đó, tôi không hiểu câu hỏi. Anh ấy không cố gắng quyết định sử dụng API nào, đúng không? Tôi nghĩ anh ấy đang cố gắng quyết định trình điều khiển nào sử dụng cho sự linh hoạt nhất. Tôi không nhận được gì từ câu hỏi cho thấy OP sẽ bắt đầu gọi API COM OLEDB. –

2

Là nhà phát triển C# và vì bạn đang truy cập nhiều nguồn dữ liệu khác nhau, bạn nên đi với OLEDB. Tôi sao chép sau đây từ white paper này vì nó mang lại một số gợi ý gì để sử dụng khi:

OLE DB Không là một thay thế cho ODBC

Công nghệ ODBC và thị trường của bên thứ ba đã trưởng thành đến một điểm ODBC là một công nghệ lý tưởng để truy cập cơ sở dữ liệu SQL. Kết quả là, một phần không thể thiếu của OLE DB là một trình quản lý trình điều khiển OLE DB mới cho phép người tiêu dùng OLE DB nói chuyện với các nhà cung cấp ODBC. Thông tin sau có thể hướng dẫn bạn lựa chọn công nghệ nào để sử dụng:

  • Nếu bạn đang truy cập cơ sở dữ liệu quan hệ tiêu chuẩn từ môi trường không phải là OLE, ODBC là lựa chọn tốt nhất.
  • Nếu bạn muốn hiển thị giao diện dữ liệu cho dữ liệu không phải SQL, OLE DB là lựa chọn tốt nhất.
  • Nếu bạn đang lập trình trong môi trường OLE, OLE DB là lựa chọn tốt nhất.
  • Nếu muốn xây dựng các thành phần cơ sở dữ liệu tương thích, OLE DB là lựa chọn duy nhất.
+0

Tôi nghĩ điều quan trọng là chỉ ra rằng viên đạn thứ hai chỉ áp dụng cho các nhà cung cấp trình điều khiển OLEDB (hoặc cho một số khách hàng rất chuyên dụng) - phần lớn phần mềm máy khách không bao giờ lộ ra một giao diện như vậy. Và viên đạn thứ tư đơn giản là tiếp thị. –

+0

@McSim: Không có điểm nào trong số các dấu đầu dòng này áp dụng cho câu hỏi. Câu hỏi đặt ra là sử dụng các cơ sở dữ liệu này từ C#. OP sẽ không gọi một API dựa trên ODBC C, cũng như API dựa trên OLE DB COM. Bạn nói bạn đã đi với OLEDB. Bạn đang gọi API COM? –

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