2012-07-18 27 views
11

我想在我的C++應用程序中連接並使用sql數據庫。我的應用程序需要存儲一些數據(可以存儲在表格的形式)這將不斷增長,並需要在不同的進程之間共享 - 所以我需要一個數據庫。我選擇sql,因爲它是初學者的建議,我需要多個作家,所以沒有SQLite選擇在C++中使用sql的選項

在搜索時,我發現了以下選項(這些選項可能包括ORMS,API和驅動程序,可能有些選項甚至不應包含 - 即我完全錯誤理解該選項;那麼請更正我)

  1. SQLAPI++ - Source(ALSO官方網站)
  2. MySQL Connector/C++(一些優點也給予有) - Source
  3. MySQL++
  4. CppDB
  5. SOCI
  6. Libodbc++(上ODBC之上運行)
  7. Database Template Library - Source
  8. Oracle Template Library
  9. 使用sql.h與ODBC:
    選擇了ODBC:
    一個。 MYSQL Connector/ODBC
    b。 EasySoft ODBC
    c。 Some Others

一些所謂的主題,幫助我找到這些選擇:T1T2T3T4

我的問題

  1. 哪個選項,使用和優點/缺點這些選項? (也可以是基於performancelearning curvecompatibilitypresent support是否有這些選項中選擇任何基準建議(我真的不知道這些選項,所以可能將一些需要組合在一起,這些選擇,使他們的工作也就是可能有一些選項是相互依存
  2. 需要什麼樣的這些選項的工具集。
  3. 如果使用任何ODBC依賴庫,那麼使用ODBC(上面的鏈接'Some Others'中提到了很多ODBC。)
  4. 任何學習它們的源代碼。(對於我已經提到過的一些選項來源。)
  5. 還有什麼我完全錯過的嗎?
  6. 如果我的申請在C怎麼辦? (這是因爲我還需要開發在使用sql℃的應用程序)

我知道我問太多。請給任何特定部分的建議。

+2

http://stackoverflow.com/faq#dontask – Adam 2012-07-18 10:34:43

+0

太多了!請保持簡潔和簡潔。 – 2012-07-18 10:37:39

+0

我知道這並不遵循所謂的規則,簡單地說。但我需要知道,所以是最好的地方。這也不完全違背這一規則。所以那些回答與這個標籤相關的實際問題的用戶也可以對這個問題有所幫助。 – 2012-07-18 10:38:00

回答

2

您需要考慮的主要問題是如何在應用程序和數據庫端跨平臺。

如果您需要連接到多個關係數據庫服務器(例如Oracle和MySQL或Firebird),您最好使用ODBC(因爲它使用UnixODBC是值得的)。我沒有使用SQLAPI ++或者SOCI,所以我不能多說這些與UnixODBC的比較。

使用UnixODBC,您可以在部署中獲得相當多的選擇。通常情況下,我根本沒有實際安裝UnixODBC,而是直接將應用程序連接到ODBC驅動程序(如果某個特定實例只會與單個數據庫交談並且最小化需要安裝的東西)。它也適用於C++和C.

使用UnixODBC - > MS SQL Server,我們使用FreeTDS驅動程序。起初我很擔心這個產品,但實際上我發現有線協議已經完全明確,所以這不僅僅是一個反向工程的入侵(也是我相信製作FreeTDS的同樣也會做EasySoft的商業驅動)。 MySQL自己提供了兼容UnixODBC的驅動程序。

我還沒有試過UnixODBC-> Oracle,因爲我已經寫了一個直接的OCI(即時客戶端)接口,我們一直使用這個。

UnixODBC比使用像OCI這樣的有線協議方法要慢得多,但差別不夠大。我們使用OCI的原因是Oracle爲Linux/AIX/Solaris平臺免費提供它,而我找不到這些平臺的ODBC Oracle驅動程序。