2012-03-23 55 views
1

我是一位新的Mac OSX應用程序開發人員,他正在學習Xcode和OSX開發的變幻莫測的過程。跳過本段的其餘部分,如果需要跳轉到下一個段落。只有一點點背景 - 過去30年來,我一直在計算機領域以這樣或那樣的方式工作,這是25年來的軟件開發人員。我正在從Windows開發工具轉換到OSX。JDBC(jTDS)和Mac OSX應用程序與Xcode 4.3

好的 - 我正在寫一個簡單的(?)OSX應用程序,它可以在Mac Mini服務器上運行。該服務器將充當iPad iOS應用程序與Windows Server 2008上基於Windows的MS SQL Server數據庫之間的「中間件」,

我決定使用SourceForge的jTDS驅動程序。我下載了SQuirreL OSX應用程序,該應用程序允許您選擇一個SQL驅動程序,設置必要的參數並連接到數據庫。像冠軍一樣工作!我想用我的應用程序做同樣的事情,但我不知道如何在應用程序中包含.jar文件,然後加載它運行它。我將不勝感激指向適當的文檔和特別是源代碼示例。在Xcode上使用Java ODBC驅動程序有一個doc文件,但它已過時,不再適用於當前Xcode的版本。

任何幫助將不勝感激,尤其是源代碼示例。 TIA並向所有其他OSX開發者致以最誠摯的問候。

回答

0

您可以在Java中加載一個類,而不必在(初始)類路徑中加載它。

您需要創建一個帶有問題的.jar文件的URLClassloader,加載該類並創建一個新實例。使用該實例,您可以創建一個新的連接。

喜歡的東西

URL[] libs = new URL[1]; 
File jarFile = new File("/path/to/jtds.jar"); 
libs[0] = jarFile.toURI().toURL(); 

URLClassLoader loader = new URLClassLoader(libs, ClassLoader.getSystemClassLoader()); 

Class drvClass = this.classLoader.loadClass("net.sourceforge.jtds.jdbc.Driver"); 

Driver drv = (Driver)drvClass.newInstance(); 
Properties props = new Properties(); 
props.put("user", "my_db_user"); 
props.put("password", "very_secret_password"); 

Connection con = drv.connect("jdbc:jtds:sqlserver://someserver", props); 

作爲替代方案,我想你也可以註冊到DriverManager的實例,然後調用的DriverManager.getConnection()。但我不完全確定這是否有效。直接在Driver實例上調用connect()肯定有效。

+0

太棒了!非常感謝代碼示例。 :-) – Brian 2012-03-25 18:12:24

0

它在SQL Squirrel中工作,因爲您將JAR放在它的/ lib目錄中並啓動它。 SQL Squirrel是一個Java Swing應用程序。它假定其/ lib目錄中的所有JAR都位於CLASSPATH中,因此當Java JVM啓動時,它會找到jTDS驅動程序JAR,並且Bob是您的叔叔。

您必須對X代碼做類似的事情:告訴它在哪裏可以找到第三方JAR並將jTDS JAR放在那裏。

我對一個細節有點困惑:你寫了「Java ODBC驅動程序」。你的意思是「Java JDBC驅動程序」嗎?

+0

是的,JDBC驅動程序當然。 – Brian 2012-03-24 12:51:30

+0

只是想澄清。謝謝。 – duffymo 2012-03-24 14:26:32