rmysql:as.character.default()中出错:

kiayqfof  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(472)

我尝试在r中使用以下函数:

heritblup <-  function(name) {
      library(RMySQL)
      library(DBI)
      con <- dbConnect(RMySQL::MySQL(),
                       dbname ="mydab",
                       host      = "localhost",
                       port  = 3306,
                       user  = "root",
                       password = "")
      value1 <- 23;
      rss<- paste0 ("INSERT INTO namestable 
                    (myvalue, person) 
                    VALUES ('$value1', '",name,"')")
      rs <<- dbGetQuery (con, rss)
    }

heritblup("Tommy")

但我一直有个错误:
as.character.default()中出错:没有方法将此s4类强制为从调用的向量:as.character.default()
我尝试将粘贴函数改为:rss<-paste0(“insert into namestable(myvalue,person)values($value1,“,name,”)”
错误仍然存在;我不知道怎么了。请帮忙

i34xakig

i34xakig1#

代码中有几个问题。我不确定op是否试图 insert 数据库中的记录或从数据库中提取。
假设,基于查询,他希望在数据库表中插入数据。
规则是查询应该在 R 它在mysql中的执行方式。价值置换(如有)应在 R 因为mysql引擎不知道 R .
因此,查询准备步骤应如下所示:

rss <- sprintf("INSERT INTO namestable (myvalue, person) VALUES (%d, '%s')", value1, name)

# "INSERT INTO namestable (myvalue, person) VALUES (23, 'test')"

如果数据插入是目标,那么 dbGetQuery 而不是根据r文档的正确选项 dbSendStatement() 应用于数据操作。来自帮助的参考建议:
但是,强烈建议调用者对数据操作语句使用dbsendstatement()。
基于该查询,执行行应为:

rs <- dbSendStatement(con, rss)
ret_val <- dbGetRowsAffected(rs)
dbClearResult(rs)
dbDisconnect(con)
return(ret_val)

相关问题