带有Xcode 4.3的JDBC(jTDS)和Mac OSX App

时间:2012-03-23 18:58:21

标签: sql sql-server xcode macos

我是一名新的Mac OSX应用程序开发人员,正在学习Xcode和OSX开发的变幻莫测。如果你愿意,可以跳过本段的其余部分并跳转到下一段。只是一点点背景 - 在过去的30年里,我以这种或那种方式进入计算机领域,25年来一直是软件开发人员。我正在从Windows开发工具过渡到OSX。

好的 - 我正在编写一个可以在Mac Mini Server上运行的简单(?)OSX应用程序。服务器将充当iPad iOS应用程序与Windows Server 2008上基于Windows的MS SQL Server数据库之间的“中间件”,

我决定使用SourceForge的jTDS驱动程序。我下载了SQuirreL OSX应用程序,它允许您选择SQL驱动程序,设置必要的参数并连接到数据库。像冠军一样工作!我想用我的应用程序做同样的事情,但我不知道如何在我的应用程序中包含.jar文件,然后加载它运行它。我希望指向适当的文档,特别是源代码示例。有一个关于在Xcode上使用Java ODBC驱动程序的doc文件,但它已经过时,不再适用于Xcode的当前版本。

非常感谢任何帮助,特别是源代码示例。 TIA和所有ny OSX开发人员的问候。

2 个答案:

答案 0 :(得分:0)

它在SQL Squirrel中有效,因为您将JAR放在其/ lib目录中并启动它。 SQL Squirrel是一个Java Swing应用程序。它假定其/ lib目录中的所有JAR都在CLASSPATH中,因此当Java JVM启动时,它会找到jTDS驱动程序JAR而Bob找到你的叔叔。

你必须用X代码做类似的事情:告诉它在哪里找到第三方JAR并将jTDS JAR放在那里。

我对一个细节感到有点困惑:你写了#34; Java ODBC驱动程序。"您的意思是" Java JDBC驱动程序"?

答案 1 :(得分: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()肯定有效。