2013-04-10 73 views
0

我正在使用以下函数从表中选择值。表名称作为该函数的参数给出。如果表不存在生成的错误,并且执行停止。我想如果没有找到该表,可以做些什么。是否有可能在R?像try-catch异常?在R操作数据库操作异常处理

library('RSQLite') 
getData <- function(portfolio){ 
    lite <- dbDriver("SQLite", max.con = 25) 
    db <- dbConnect(lite, dbname = "portfolioInfo.db") 
    res <- dbSendQuery(db, paste("SELECT * from ",portfolio," ",sep="")) 
    data <- fetch(res) 
    return (data) 
} 
getData("table1") 

回答

1

这样做的一种方法是检查返回的数据的类。

我不熟悉RSQLite,但我想它会返回一个数据框,如果发现表和文本错误,当不是?

因此,一个可能性是,以检查是否有错误或不升高:

checkQueryResult<-function(data){ 
    if(class(data)=='data.frame') cat('SQL execution worked!') 
    else cat('Something went wrong, table does not exist?') 
    } 

checkQueryResult(getData("table1")) 

但是,也许RSQLite软件包中已经内建了错误处理的东西?