识别闪亮应用程序中何时发生数据库连接
Recognize when a database connection happens in shiny app
我有下面这个闪亮的应用程序,它由 app.r
和 global.r
组成。全局文件包括启用数据库连接的代码。此连接是通过大量密码启用的,这些密码只有数据库管理员知道。所以我希望每次用户输入错误的密码时都显示一条消息。对于这个问题,我只是使用了一个随机密码来创建 if else
语句,但正如我上面所说的,连接发生在许多不同的密码上,所以我不想手动设置所有这些密码,而是想识别连接是否 con
发生了。
app.r
library(shiny)
library(shinydashboard)
library(shinydashboardPlus)
library(shinyjs)
mytitle <- paste0("Life, Death & Statins")
dbHeader <- dashboardHeaderPlus(
titleWidth = "0px"
)
shinyApp(
ui = dashboardPagePlus(
header = dbHeader,
sidebar = dashboardSidebar(width = "0px"
),
body = dashboardBody(
useShinyjs(),
tags$script(HTML("$('body').addClass('fixed');")),
tags$head(tags$style(".skin-blue .main-header .logo { padding: 0px;}")),
passwordInput("pwd",label = "",value = "",width = "100%" ),
actionButton('button', "Continue"),
uiOutput("error")
)
),
server<-shinyServer(function(input, output,session) {
hide(selector = "body > div > header > nav > a")
observeEvent(input$button, {
if(input$pwd==""){
return(NULL)
}
else if(input$pwd=="qh2gt1"){
return(NULL)
}
else{
output$error<-renderUI({
"Please re-enter database browser password"
})
}
})
}
)
)
global.r
library(odbc)
con<- dbConnect(odbc(),
driver = "SQL Server",
database = "databasename",
server = svr,
port = 1433,
UID = "uid",
PWD = input$pwd)
您可以将 dbConnect
封装在 try
中:
con <- try( dbConnect( odbc(),
driver = "SQL Server",
database = "databasename",
server = svr,
port = 1433,
UID = "uid",
PWD = input$pwd))
然后检查其 class
:
if( class(con) != "try-error" )
# OK code
else
# Error code
我有下面这个闪亮的应用程序,它由 app.r
和 global.r
组成。全局文件包括启用数据库连接的代码。此连接是通过大量密码启用的,这些密码只有数据库管理员知道。所以我希望每次用户输入错误的密码时都显示一条消息。对于这个问题,我只是使用了一个随机密码来创建 if else
语句,但正如我上面所说的,连接发生在许多不同的密码上,所以我不想手动设置所有这些密码,而是想识别连接是否 con
发生了。
app.r
library(shiny)
library(shinydashboard)
library(shinydashboardPlus)
library(shinyjs)
mytitle <- paste0("Life, Death & Statins")
dbHeader <- dashboardHeaderPlus(
titleWidth = "0px"
)
shinyApp(
ui = dashboardPagePlus(
header = dbHeader,
sidebar = dashboardSidebar(width = "0px"
),
body = dashboardBody(
useShinyjs(),
tags$script(HTML("$('body').addClass('fixed');")),
tags$head(tags$style(".skin-blue .main-header .logo { padding: 0px;}")),
passwordInput("pwd",label = "",value = "",width = "100%" ),
actionButton('button', "Continue"),
uiOutput("error")
)
),
server<-shinyServer(function(input, output,session) {
hide(selector = "body > div > header > nav > a")
observeEvent(input$button, {
if(input$pwd==""){
return(NULL)
}
else if(input$pwd=="qh2gt1"){
return(NULL)
}
else{
output$error<-renderUI({
"Please re-enter database browser password"
})
}
})
}
)
)
global.r
library(odbc)
con<- dbConnect(odbc(),
driver = "SQL Server",
database = "databasename",
server = svr,
port = 1433,
UID = "uid",
PWD = input$pwd)
您可以将 dbConnect
封装在 try
中:
con <- try( dbConnect( odbc(),
driver = "SQL Server",
database = "databasename",
server = svr,
port = 1433,
UID = "uid",
PWD = input$pwd))
然后检查其 class
:
if( class(con) != "try-error" )
# OK code
else
# Error code