3

tryCatch()Rがデータベース接続用のすべてのスロットをサイレントに使い果たすのを防ぐために使用して、SQLクエリを作成しています。次のようになります。

sql <- "SELECT * FROM addresses WHERE zipcode=10202"
con <- dbConnect(PostgreSQL(), user='user', password='pswd',
                 dbname='contacts',host='dbserv')
tryCatch( {
    rs <- dbSendQuery(con, statement=sql)                              
    fp <- fetch(rs,n=-1) # Fetch all
    dbClearResult(rs)
    fp},
  finally=dbDisconnect(con))
fp

Rはその目的のために何かよりクリーンなものを提供しますか?readLines()文字列引数を使用して、ファイル接続が開いたままにならないようにする方法を考えています。

4

1 に答える 1

4

次のようなon.exitを試すことができます。

    foo <- function() {

      con <- dbConnect(
        PostgreSQL(),
        user=config$db.user,
        password=config$db.password,
        dbname=config$db.name,
        host=config$db.host
      )

      on.exit({
        dbDisconnect(con)
      })

      ## ... do something w/ connection

    }

関数fooが戻る (または例外により終了する) とき、渡された式on.exitが評価されます。

于 2012-09-21T21:24:57.050 に答える