首页 > 解决方案 > 像使用 odbc 一样连接 RJDBC

问题描述

我正在尝试使用 RJDBC 连接到我的 MS SQL 数据库,但我不知道要填写什么url参数。使用 odbc 就足够了:

dbConnect(odbc::odbc(),
          Driver = "SQL Server",
          dsn = "MyDsn",
          uid = "User",
          pwd = "123456",
          server = "myserver123456\\myserver1",
          database = "MyDatabase")

当我将驱动程序从 odbc 交换到 jdbc 时,它会失败:

dbConnect(RJDBC::JDBC(classPath = "C:/jdbc/mssql-jdbc-7.0.0.jre8.jar"),
          Driver = "SQL Server",
          dsn = "MyDsn",
          uid = "User",
          pwd = "123456",
          server = "myserver123456\\myserver1",
          database = "MyDatabase")

错误:Error in .jcall("java/sql/DriverManager", "Ljava/sql/Connection;", "getConnection", : argument "url" is missing, with no default

我应该在 url 参数中写什么?怎么认识?

标签: rsql-serverjdbc

解决方案


RJDBC 对该dbConnect函数使用不同的参数:驱动程序定义和连接 URL(您缺少的部分)。例如(来自https://www.rforge.net/RJDBC/),要连接到 MySQL 数据库,您的代码将如下所示:

library(RJDBC)
drv <- JDBC("com.mysql.jdbc.Driver",
       "/etc/jdbc/mysql-connector-java-3.1.14-bin.jar",
       identifier.quote="`")
conn <- dbConnect(drv, "jdbc:mysql://localhost/test", "user", "pwd")

加载 MySQL 的 JDBC 驱动程序(根据需要调整驱动程序 JAR 文件的路径)并连接到本地数据库“test”。连接句柄 conn 用于所有后续操作。

对于 SQL Server,您的代码将如下所示(来自https://www.r-bloggers.com/connecting-to-sql-server-from-r-using-rjdbc/):

require(RJDBC)
drv <- JDBC("com.microsoft.sqlserver.jdbc.SQLServerDriver",
            "C:/jdbc/mssql-jdbc-7.0.0.jre8.jar") 
conn <- dbConnect(drv, "jdbc:sqlserver://serverName", "userID", "password")

推荐阅读