R Shiny SQLite应用程序:数据检索问题

问题描述

我正在尝试从用户选择的数据库中检索数据。我每次遇到的错误是:

“卡马西平”附近:语法错误

ps:卡马西平是用户选择的元素。

我的sqlite数据库如下:

enter image description here

我对编程非常陌生。有人可以帮忙吗?我已经在互联网上阅读过,该问题可能是由于sqlite数据库中的数据类型错误引起的。有人可以建议什么吗?我的代码如下:

global.r


# Libraries

library("shiny")
library("Rsqlite")
library("dtplyr")
library("dplyr")

# Globar Variables 

db <- dbConnect (sqlite(),"/Users/sudiptobosu/200922/20200714PPCP.sqlite")
# Global Function





names_ppcp = dbGetQuery(db,"Select PPCP FROM mydata")

server.r

shinyServer(function (input,output,session) {

output$ppcpOut <- reactive({
  input$user1
})  


output$propertyOut <- reactive({
  input$user2
})
  

ppcpquery <- reactive({
  input$user1
})  

query <- reactive({
  paste('SELECT solubility FROM mytable WHERE PPCP = "%s"',ppcpquery())
})


output$valueout <- reactive({
  
  dbGetQuery(db,paste(query()))
  
})

#propertyquery <- eventReactive ({input$user2})  

session$onSessionEnded (function()
  {
  dbdisconnect(db)
})

})
  


ui.r

ui <- fluidPage ( 
  titlePanel("bo-DEREC CE"),sidebarLayout( 
    sidebarPanel(
      selectInput("user1","Select the PPCP",choices = names_ppcp),selectInput("user2","Select the property",choices = c("Solubility","Volatility","Adsorbability","Degradability"))
    ),mainPanel(
      textoutput("ppcpOut"),textoutput("propertyOut"),textoutput("valueout")
    )
  )
)

解决方法

通常,如果您提供了一个可以运行的示例,则更容易弄清楚这里出了什么问题-但仔细检查代码,您可以找到以下行: paste('SELECT solubility FROM mytable WHERE PPCP = "%s"',ppcpquery()),您可能需要这样做:sprintf('SELECT solubility FROM mytable WHERE PPCP = "%s"',ppcpquery())

paste不支持使用%s之类的变量,您需要使用sprintf以这种方式构造字符串。