显示所有打开的 RODBC 连接
Posted
技术标签:
【中文标题】显示所有打开的 RODBC 连接【英文标题】:Show all open RODBC connections 【发布时间】:2014-08-27 14:51:21 【问题描述】:有人知道怎么做吗? showConnections 不会列出来自 odbcConnect 的任何打开的连接。
【问题讨论】:
【参考方案1】:您可以通过以下方式缩小搜索范围,这将返回您当前环境中属于 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)]
如有任何问题或相关问题,请告诉我
-DMT
【讨论】:
要检查 RODBC“通道”的连接状态,您可以调用私有函数RODBC:::odbcValidChannel
(三个冒号!!!),因为它在 RODBC 中被广泛使用,所以您可以期望它是稳定的(不知道为什么在RODBC中公开了这么重要的功能)。包RODBCext
具有类似的功能,但在包内也是私有的。以上是关于显示所有打开的 RODBC 连接的主要内容,如果未能解决你的问题,请参考以下文章
运行 randomForestSRC 后 RODBC 失去连接