2012-03-23 59 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