2013-05-31 78 views
-1

我正在考慮啓動一個將與多個DBMS進行通信的項目。儘管直接從C/C++不可用,但JDBC仍然具有吸引力,原因如下:在C/C++中使用JNI來利用JDBC是不是一個好主意?

  1. 我的軟件應該可以在Windows/OSX/Linux之間移植。在我看過的多個體繫結構上的這些平臺上管理ODBC似乎非常麻煩。
  2. 我正計劃將JDBC庫與我的應用程序一起分發。這似乎是嘗試爲多個環境分發每個ODBC驅動程序的更好選擇。
  3. 我比JDBC更熟悉JDBC。
  4. 似乎在某些情況下JDBC可能會得到更好的支持。

我幾乎都相信自己這是要走的路。但是,我不知道我對ODBC和JNI的缺乏經驗是否導致我做出天真的結論。

請指教。

+1

因此,您將基本上將JVM嵌入您的本機代碼應用程序中?鑑於正在努力實現的目標,我認爲這是你最好的選擇。只要你得到純粹的Java JDBC驅動程序,你應該很好。 ODBC工作的唯一方法是如果你可以讓UnixODBC工作 - 你可能需要購買驅動程序包,這取決於涉及的DBMS。如果你問我,太多的痛苦會讓你很少/沒有收穫。 – parry

回答

0

我不會爲了ODBC而使用JNI/Java。在Windows上,只需使用本機ODBC API。在* nix上,unixodbc運行良好。此外,還有第三方供應商,如Progress(DataDirect)。

我用unixodbc看到的唯一陷阱(它不是真正的unixodbc問題)是與Sybase IQ混合使用Sybase IQ & Sybase IQ。 Sybase爲兩個DBMS提供的驅動程序構建方式不同,使得它們在運行時對x64系統不兼容(其中一個構建期望32位類型,其他64位類型和unixodbc必須根據所需的驅動程序進行相應構建,並且你不能同時使用兩者)。我還建議使用抽象層,如odbc++(可悲的是,似乎沒有被主動維護 - 並注意最新的odbC++有64位兼容性問題)或OTL(它是積極的被保持)。

相關問題