显示所有打开的RODBC连接

时间:2014-08-27 14:51:21

标签: r rodbc

有谁知道怎么做? showConnections不会列出来自odbcConnect的任何打开的连接。

1 个答案:

答案 0 :(得分:2)

您可以通过以下方式缩小搜索范围,这将返回当前RODBC类环境的所有变量。

envVariables<-ls()
bools<-sapply(envVariables, function(string){
        class(get(string))=="RODBC"
    })

rodbcObj<-envVariables[bools]

封闭式连接仍属于RODBC类,因此这里仍有一些工作要做。

我们可以使用trycatch定义一个函数,它将尝试获取相关RODBC对象的连接信息。如果它是一个打开的连接,那么这个命令将运行正常,我们返回变量名的字符串。

如果RODBC对象不是开放连接,则会抛出错误,我们会抓住错误,并且按照我实施的方式返回NA。你可以在这里返回任何数量的东西。

openConns<-function(string){

   tryCatch({
            result<-odbcGetInfo(get(string))
            string
        }, error = function(e){
            NA
        })
}

然后我们删除与错误对应的返回值。在我的情况下,NA,所以我在返回时做了na.omit。

na.omit(sapply(rodbcObj, openConns))

或者

result<-sapply(rodbcObj, openConns)
result[!is.na(result)]

对此有任何问题或意见让我知道

5'-DMT