从我在Ubuntu下运行的Ruby程序,我试图连接到另一台运行Windows的计算机上的Access数据库。我收到了错误
'require':无法加载此类文件 - win32ole(LoadError)
我面临的另一个问题是我的系统上没有的Access文件,因此我想使用ip address
和port number
以及user name
和{{1}该文件所在的系统,以便通过使用Internet连接我可以连接并获取数据。不幸的是,我不知道在下面的代码中我可以在哪里指定这些细节。
password
如何建立与Access数据库的连接?
答案 0 :(得分:4)
你的问题有三个:
在非Windows机器上运行的Ruby应用程序中,您根本无法使用win32ole
,因此非常。即使你可以,你的代码在你的Linux机器上需要一个OLEDB提供程序,我怀疑这样的事情是存在的。
此处我想使用
ip address
和port number
你做不到。要连接到远程计算机上的Access数据库,您需要连接到Windows共享文件夹,而不是TCP端口。因此,在Windows服务器上,您将拥有一个共享文件夹,而在Linux客户端上,您将安装该文件夹。
如果win32ole
不可用,那么您需要使用其他一些数据库访问技术。 ODBC是一种常见的选择,但遗憾的是,对Linux上的Access数据库的ODBC支持(通过“mdb工具”和“unixODBC”)是非常不可靠的,至少在我的经验中是这样。
在您的情况下,我倾向于尝试使用JRuby和UCanAccess JDBC驱动程序。我刚刚使用JRuby代码在我的Ubuntu 14.04 LTS盒子上成功测试了它......
connUrl = "jdbc:ucanaccess:///mnt/weezerpublic/uca301demo.accdb"
conn = java.sql.DriverManager.get_connection(connUrl)
stmt = conn.create_statement
rs = stmt.execute_query("SELECT TextField FROM myTableInAccess WHERE ID=1")
while (rs.next) do
puts rs.getString("TextField")
end
conn.close
...通过shell脚本调用...
#!/bin/bash
export CLASSPATH=.:/home/gord/Downloads/JDBC/UCanAccess/loader/ucanload.jar
jruby jrubyTest.rb
......有以下警告: