有谁知道怎么做? showConnections不会列出来自odbcConnect的任何打开的连接。
答案 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