2010-01-21 27 views
5

Tôi đang tìm kiếm các tùy chọn để trừu tượng hóa chi tiết máy chủ cơ sở dữ liệu khỏi ứng dụng của tôi (trong C++), tôi muốn viết mã của mình để độc lập với phần phụ trợ cơ sở dữ liệu thực tế. Tôi biết MySQL có một thư viện tốt, nhưng tôi không muốn bị ràng buộc với một cơ sở dữ liệu thực hiện duy nhất. Có những lựa chọn tốt cho điều này?Thư viện nguồn mở để truy cập cơ sở dữ liệu trừu tượng trong C++?

+0

Khối truy cập dữ liệu doanh nghiệp có sẵn trong C#. Có thể bạn đã tạo một số trình bao bọc C++ được quản lý nếu đó là một tùy chọn cho bạn. –

Trả lời

1

nhiều ứng dụng sử dụng odbc (ví dụ: unixODBC), cũng có otl. trên cửa sổ, bạn có thể sử dụng ado.net từ managed C++ hoặc giao diện ado com cũ ...

4

SOCI là tốt. Hỗ trợ nhiều cơ sở dữ liệu, hoạt động tốt, API kiểu C++ hiện đại, hoạt động với sự tăng cường.

1

libodbc++ cung cấp API khá tốt. Ngoài ra những kẻ lớn Qt (xem Kyle Lutz 'câu trả lời) & wxWidgets có lớp trừu tượng db, vì vậy nó có thể là một ý tưởng tốt để sử dụng chúng nếu bạn định sử dụng/bạn đã sử dụng bất kỳ phần nào khác của các khuôn khổ đó.

4

Ý kiến ​​của tôi là quên một trình điều khiển cơ sở dữ liệu chéo và tập trung vào việc tìm kiếm hoặc tạo Lớp truy cập dữ liệu chéo cơ sở dữ liệu. Một vài điều reaons:

  • Truy vấn phức tạp (đọc bất kỳ thứ gì không phải là đồ chơi) luôn sử dụng một hoặc hai tính năng dành riêng cho cơ sở dữ liệu. Ví dụ: LIMITOFFSET, thường được sử dụng để phân trang, không phổ biến.
  • Sớm hay muộn bạn sẽ muốn chèn hàng loạt và bạn sẽ muốn nó càng nhanh càng tốt, vì 3 giờ là tốt hơn 6 giờ. Mỗi cơ sở dữ liệu có một cách "tối ưu" khác nhau để làm điều này, do đó, DAL của bạn sẽ cần phải đặc biệt trường hợp này anyways.
  • Cơ sở dữ liệu khác nhau có thể trưng ra các cơ chế ràng buộc khác nhau — thậm chí các loại cột tùy chỉnh — có thể đáng được tận dụng khi có thể (PostgreSQL tuyệt vời cho việc này).
  • Nếu bạn muốn thực hiện bất kỳ bộ nhớ đệm cấp ứng dụng nào, bạn cần có DAL anyways.

Vì vậy, hãy tự mình sử dụng libmysql - chỉ cần ẩn nó sau tường lửa trình biên dịch trong DAL của bạn và chuẩn bị trao đổi nó sau này. Bạn có thể tự bảo vệ mình khỏi việc chuyển đổi cơ sở hạ tầng mà không phải sử dụng trình bao bọc SQL mẫu số thấp nhất.

Nếu điều đó không khớp với bạn, hãy xem SQLAPI++.

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