Skip to content

参数

绑定参数

.sq 文件使用与 SQLite 完全相同的语法,包括 SQLite 绑定参数。如果一个语句包含绑定参数,其关联方法将需要相应的参数。

类型推断

SQLDelight 会推断运行时参数的正确类型和可空性,包括自定义列类型。

sql
selectByNumber:
SELECT *
FROM hockeyPlayer
WHERE player_number = ?;
kotlin
val selectNumber10 = playerQueries.selectByNumber(player_number = 10)
println(selectNumber10.executeAsOne())
// Prints "Corey Perry"

具名参数

可以使用具名参数或索引参数。

sql
firstOrLastName:
SELECT *
FROM hockeyPlayer
WHERE full_name LIKE ('% ' || :name)
OR full_name LIKE (:name || ' %');
kotlin
playerQueries.firstOrLastName(name = "Ryan")

集合参数

也可以将值集合作为参数传递。

sql
selectByNames:
SELECT *
FROM hockeyPlayer
WHERE full_name IN ?;
kotlin
playerQueries.selectByNames(listOf("Alec", "Jake", "Matt"))

插入

INSERT VALUES 的参数可以绑定到表的 data class

sql
insertPlayer:
INSERT INTO hockeyPlayer
VALUES ?;
kotlin
val rickardRakell = HockeyPlayer(
  full_name = "Rickard Rakell",
  number = 67
)
playerQueries.insertPlayer(rickardRakell)

输入净化

SQLDelight 使用查询占位符 (query placeholders) 将参数传入查询。参数输入的实际净化工作由各个平台和变体的底层驱动实现完成。