问题描述
我正在尝试从用户选择的数据库中检索数据。我每次遇到的错误是:
“卡马西平”附近:语法错误
ps:卡马西平是用户选择的元素。
我对编程非常陌生。有人可以帮忙吗?我已经在互联网上阅读过,该问题可能是由于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
以这种方式构造字符串。