,可以通过以下步骤实现:
- 首先,确保已经安装了shiny和RODBC包,并加载它们:library(shiny)
library(RODBC)
- 创建一个shiny应用程序,并在UI部分添加一个selectInput和一个actionButton:ui <- fluidPage(
selectInput("dropdown", "选择一个选项", choices = NULL),
actionButton("refresh", "刷新")
)
- 在server部分,使用RODBC连接到数据库,并在应用程序启动时从数据库中检索数据并填充selectInput的选项:server <- function(input, output, session) {
# 在应用程序启动时连接到数据库
conn <- odbcConnect("your_database_connection_string")
# 从数据库中检索数据并填充selectInput的选项
observeEvent(session$clientData$url_search, {
query <- "SELECT DISTINCT column_name FROM table_name"
data <- sqlQuery(conn, query)
updateSelectInput(session, "dropdown", choices = data$column_name)
})
# 点击刷新按钮时更新selectInput的选项
observeEvent(input$refresh, {
query <- "SELECT DISTINCT column_name FROM table_name"
data <- sqlQuery(conn, query)
updateSelectInput(session, "dropdown", choices = data$column_name)
})
# 关闭数据库连接
onSessionEnded(function() {
odbcClose(conn)
})
}
# 运行shiny应用程序
shinyApp(ui, server)
在上述代码中,首先在应用程序启动时连接到数据库,并使用sqlQuery函数执行SQL查询以检索唯一的列名。然后,使用updateSelectInput函数将检索到的数据填充到selectInput的选项中。当点击刷新按钮时,再次执行相同的SQL查询并更新selectInput的选项。最后,在会话结束时关闭数据库连接。
这样,当从RODBC检索到的数据发生变化时,可以通过点击刷新按钮或应用程序启动时自动更新selectInput的选项。