2013-04-10 67 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軟件包中已經內建了錯誤處理的東西?