Я пытаюсь сделать простое приложение, которое показывает данные из таблицы mySQL и помогает пользователям сохранять новые данные в ней. Я уже подключаю БД и читаю таблицу.
Проблемы начинаются, когда я сохраняю данные из блестящего ввода. Я пробовал много разных случаев, и это мне не помогло. Основная цель - добавить новую строку в таблицу в MySQL после того, как пользователь нажал «Добавить пользователя», и обновить таблицу новыми данными в пользовательском интерфейсе.
Упрощенная версия моего приложения:
library(DBI)
ui <- fluidPage(
textInput("name", "Enter your name:"),
numericInput("age", "How ald are you?", ""),
submitButton("save", "Add user"),
br(),
tableOutput("tbl"),
)
server <- function(input, output, session) {
getDataSql <- function(query) {
con = dbConnect(RMySQL::MySQL(), dbname = "database", host = "host", user = "root", password = "password", port = 3306)
result <- dbGetQuery(con, query)
dbDisconnect(con)
result
}
saveDataSql <- function(query) {
con = dbConnect(RMySQL::MySQL(), dbname = "database", host = "host", user = "root", password = "password", port = 3306)
dbGetQuery(con, query)
dbDisconnect(con)
}
output$tbl <- renderTable({
query <- "SELECT * FROM test;"
getDataSql(query)
})
observe({
if (input$save > 0){
query <- sprintf<-(paste("INSERT INTO `test` (`name`, `age`) VALUES ('", input$name, " ','", input$age, "');", sep = ""))
saveDataSql(query)
}
return()
})
}
shinyApp(ui, server)
UPD Я обновляю часть своего кода, используя dbExecute , но он все еще не работает.
observeEvent(input$save, { con = dbConnect(RMySQL::MySQL(),
dbname = "stocktheft", host = "127.0.0.1", user = "root",
password = "123456", port = 3306)
query <- paste("INSERT INTO test (name, age) VALUES ('", input$name, " ','", input$age, "');", sep = "")
dbExecute(con, query)
dbDisconnect(con) })