2
有誰知道如何做到這一點? showConnections不會列出來自odbcConnect的任何打開的連接。顯示所有打開的RODBC連接
有誰知道如何做到這一點? showConnections不會列出來自odbcConnect的任何打開的連接。顯示所有打開的RODBC連接
您可以通過以下方式縮小搜索範圍,這將返回當前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
十分感謝:)我要看看這個! – nathaneastwood 2014-09-01 08:29:56
要檢查RODBC「通道」的連接狀態,您可以調用專用函數RODBC ::: odbcValidChannel(三個冒號!!!),由於RODBC在RODBC中廣泛使用,不知道爲什麼這樣一個重要功能已經在RODBC上公開)。包'RODBCext'具有類似的功能,但在包中也是私有的。 – 2016-12-27 21:38:57