【问题标题】:Recognize when a database connection happens in shiny app识别闪亮应用程序中何时发生数据库连接
【发布时间】:2021-01-06 21:56:38
【问题描述】:

我在下面有一个闪亮的应用程序,它由app.rglobal.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)

【问题讨论】:

    标签: r shiny odbc


    【解决方案1】:

    您可以将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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-02-11
      • 2018-04-08
      • 1970-01-01
      • 2020-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-02
      相关资源
      最近更新 更多