加载SQL表后使用odbcClose(通道)是一种好习惯吗?

时间:2015-10-20 12:46:56

标签: r shiny rodbc

参考以下示例:http://www.r-bloggers.com/a-shiny-example-sap-hana-r-and-shiny/

在以下示例中,他们在获得所需的表后运行odbcClose(ch)。将表加载到工作区后使用odbcClose(channel)是一种好习惯吗?在Shiny应用程序中使用SQL连接时,是否应该做任何不同的事情?

library("shiny")
library("RODBC")

ch<-odbcConnect("HANA_TK",uid="SYSTEM",pwd="manager")
odbcQuery(ch,"SELECT table_name from SYS.CS_TABLES_ where schema_name = 'SFLIGHT'")
tables<-sqlGetResults(ch)
**odbcClose(ch)**

shinyUI(pageWithSidebar(

  headerPanel("SAP HANA and R using Shiny"),

  sidebarPanel(
    selectInput("Table", "Choose a table:",
                choices = tables$TABLE_NAME),
    numericInput("Records", "Number of Records to view:", 10)
  ),

  mainPanel(
    tableOutput("view")
  )
))

1 个答案:

答案 0 :(得分:2)

如果我把它们打开,我还没有发现任何问题。我认为R最终将关闭所有未使用的连接。

我不确定是否有系统级别的好处,但我养成了尽快关闭我的频道的习惯。

当我的系统管理员需要执行某些任务时,他可能需要关闭服务器,如果有人正在访问数据,他会尝试不要这样做。一个打开的连接对他来说就好像有人正在访问数据一样,所以他等到连接关闭才能关闭服务器。如果我离开了一个流浪的连接,他可能永远不会觉得他可以做他的维护。

所以,通过专业礼貌的轶事,我尽快关闭我的联系。