使用JRuby和Microsoft JDBC Driver 4.0连接到SQL Server实例时出错

时间:2014-02-04 14:39:07

标签: sql-server jdbc jruby

我正在尝试使用JRuby 1.9.3和MS JDBC Driver 4.0连接到SQL Server 2012数据库。从JRuby IRB控制台我输入以下内容:

require "sqljdbc4.jar"
Java::com.microsoft.sqlserver.jdbc.SQLServerDriver
url = "jdbc:sqlserver://ipaddress;databaseName=databasename"
c = java.sql.DriverManager.get_connection(url, "username", "password")

似乎工作正常,直到最后一行,我得到一个“Java:JavaSql :: SqlException:没有为jdbc找到合适的驱动程序:sqlserver:// ipaddress; databaseName = databasename”错误。

我知道ip地址,数据库名称,用户名和密码是正确的,因为我可以通过SQL Server管理工作室从同一台机器连接而没有问题。

我错过了什么?

编辑:在带有SQL Server 2012的Windows Server 2008和带有SQL Server 2008 Express的Windows 7上尝试使用相同的结果。

2 个答案:

答案 0 :(得分:1)

我使用JRuby 1.9.3和MS JDBC Driver 4.0解决了同样的问题并解决了这个问题:

driver = Java::com.microsoft.sqlserver.jdbc.SQLServerDriver.new
props = java.util.Properties.new
props.setProperty("user", "username")
props.setProperty("password", "password")
url = 'jdbc:sqlserver://servername;instanceName=instance;databaseName=DbName;'
conn = driver.connect(url, props)

在页面底部找到:https://github.com/jruby/jruby/wiki/JDBC

似乎我的设置存在动态加载驱动程序的问题,需要这种更明确的方法。

答案 1 :(得分:0)

听起来你没有在JRuby正在寻找它的正确位置加载JDBC驱动程序。默认情况下,require在C:\ jruby-1.7.10 \ lib \

中查找

此外,您可能需要将jar文件所在的文件夹添加到类路径中。

require 'java'
$CLASSPATH << "your/folder"

我的完整测试脚本如下所示:

$CLASSPATH << "c:/jruby-1.7.10/lib/"
require "sqljdbc4.jar"

Java::com.microsoft.sqlserver.jdbc.SQLServerDriver
url = 'jdbc:sqlserver://127.0.0.1\\SQL2012:1433;databaseName=TestAllTheThings'
conn = java.sql.DriverManager.get_connection(url, "sa", "sapassword")
statement = conn.create_statement

q = "SELECT * FROM Input"
rs = statement.execute_query(q)

while (rs.next) do
  puts rs.getObject('Id')
end

statement.close
conn.close

TestAllTheThings是我的数据库名称,Input是该数据库中的一个表,Id是该表中的一列。