【发布时间】:2018-03-28 18:30:17
【问题描述】:
为了避免 DRY,我正在尝试创建一个带有可变列名的 sql INSERT 语句以及通过 ScalikeJDBC 的 sql 插值填充这些列的数据:
case class MySQLInsertMessage(tableName:String, columns:List[String], values:List[String])
def depositMessage(msg: MySQLInsertMessage): Unit = {
NamedDB('MySQLMsgDepositor) localTx { implicit session =>
val sqlStmt = sql"INSERT INTO ${msg.tableName} (${msg.columns}) VALUES (${msg.values})"
println("The sql statement is: " + sqlStmt.statement)
println("The parameters are: " + sqlStmt.parameters)
sqlStmt.update().apply()
}
}
当我这样称呼它时:
depositMessage(MySQLInsertMessage("My_Table", List("key", "email"), List("42", "user@email.com")))
生成的控制台打印输出是:
sql语句为:INSERT INTO ? (?, ?) 值 (?, ?)
参数为:List(My_Table, key, email, 42, user@email.com)
你 您的 SQL 语法有错误;检查对应的手册 您的 MySQL 服务器版本,以便在“My_Table”附近使用正确的语法 ('key', 'email') VALUES ('42', 'user@emai' 在第 1 行 java.sql.SQLSyntaxErrorException:您的 SQL 中有错误 句法;检查与您的 MySQL 服务器版本相对应的手册 在 ''My_Table' ('key', 'email') VALUES 附近使用正确的语法 ('42', 'user@emai' 在第 1 行
我尝试将sql"..." 包装成这样:sql"""...""",但这似乎没有什么不同。我可以在我的 MySQL 工作台 GUI 中很好地执行预期的语句。知道我的语法错误是什么吗?
【问题讨论】:
-
Any idea what my syntax error is?When to use single quotes, double quotes, and back ticks in MySQL -
您不能使用引号(单引号或双引号)作为对象名称...
标签: mysql scala scalikejdbc