在播放框架 SQL 异常中插入两个值列表
Insert Two List of values in play framework SQL anorm
目前我正在研究 Playframework。我需要使用 Anorm 将两个 List
值插入到数据库中。一个是names: List[String]
,另一个是numbers: List[Int]
,它们的大小相同。
我需要在 Database Table
中的相同 Row
中插入 names
的第一个位置和 numbers List
的第一个位置,同样需要将所有值插入两个 Lists
.
我试过了:
for (no<- 0 to (names.size-1)) {
SQL(
"""
insert into table(NAME,NUMBER)
values(
names[{no}],numbers[{no}]
)
""").on(
'no-> no
).executeUpdate()
}
它给我以下错误 [MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '[0],numbers[0]
我也试过
for (name<- names;number<- numbers) {
SQL(
"""
insert into table(NAME,NUMBER)
values(
{name},{number}
)
""").on(
'name-> name,
'number-> number
).executeUpdate()
}
但它就像 java 中的 two for loops
一样。
for(){
for(){}
}
您应该先使用 zip
组合两个列表,这样您就有了一个列表,其中每个列表元素都是名称和编号的元组:
val names = List("bob", "steve", "frank")
val numbers = List(1,2,3)
val name_and_numbers = names zip numbers
name_and_numbers.foreach{ tuple =>
println(s"name: ${tuple._1} number: ${tuple._2}")
}
带有 names[{no}]
的 SQL 语句无法以任何方式工作:数据库没有 Scala 值 names
.
您可以使用 .zipped
:
scala> (List("A", "B"), List(1.2F, 34.5F)).zipped.foreach { (str, f) => println(s"zipped: $str -> $f") }
zipped: A -> 1.2
zipped: B -> 34.5
那么Anorm的执行情况如下
(names, numbers).zipped.foreach { (name, num) =>
SQL"insert into table(NAME,NUMBER) values($name, $num)".executeUpdate()
}
目前我正在研究 Playframework。我需要使用 Anorm 将两个 List
值插入到数据库中。一个是names: List[String]
,另一个是numbers: List[Int]
,它们的大小相同。
我需要在 Database Table
中的相同 Row
中插入 names
的第一个位置和 numbers List
的第一个位置,同样需要将所有值插入两个 Lists
.
我试过了:
for (no<- 0 to (names.size-1)) {
SQL(
"""
insert into table(NAME,NUMBER)
values(
names[{no}],numbers[{no}]
)
""").on(
'no-> no
).executeUpdate()
}
它给我以下错误 [MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '[0],numbers[0]
我也试过
for (name<- names;number<- numbers) {
SQL(
"""
insert into table(NAME,NUMBER)
values(
{name},{number}
)
""").on(
'name-> name,
'number-> number
).executeUpdate()
}
但它就像 java 中的 two for loops
一样。
for(){
for(){}
}
您应该先使用 zip
组合两个列表,这样您就有了一个列表,其中每个列表元素都是名称和编号的元组:
val names = List("bob", "steve", "frank")
val numbers = List(1,2,3)
val name_and_numbers = names zip numbers
name_and_numbers.foreach{ tuple =>
println(s"name: ${tuple._1} number: ${tuple._2}")
}
带有 names[{no}]
的 SQL 语句无法以任何方式工作:数据库没有 Scala 值 names
.
您可以使用 .zipped
:
scala> (List("A", "B"), List(1.2F, 34.5F)).zipped.foreach { (str, f) => println(s"zipped: $str -> $f") }
zipped: A -> 1.2
zipped: B -> 34.5
那么Anorm的执行情况如下
(names, numbers).zipped.foreach { (name, num) =>
SQL"insert into table(NAME,NUMBER) values($name, $num)".executeUpdate()
}