我正在尝试使用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上尝试使用相同的结果。
答案 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是该表中的一列。