将多个参数传递给 Racket 中的 SQLite 查询
Passing multiple parameters to an SQLite query in Racket
我试图将多个变量传递给 Racket 中的 sqlite 查询。
(define select-test
(prepare dbconn "SELECT count(*) FROM All_data WHERE Season = ? AND Division = '?'"))
(define season 2019)
(define league "E0")
;(query-value dbconn select-test '(season league))
;(query-value dbconn select-test season league)
在线示例显示了列表和单独的变量作为查询的输入,但这些都不适合我。
我收到此列表的消息:
query-value: cannot convert given value to SQL type
given: '(season league)
type: parameter
dialect: SQLite
或 'wrong number of parameters for query' 如果单独完成。
有人可以帮助正确的语法吗?
问题出在您的 SQL 上。本声明:
SELECT count(*) FROM All_data WHERE Season = ? AND Division = '?'
有一个参数(用于季节比较)。 '?'
只是一个包含问号的文字字符串。只需写成 ?
,像这样:
SELECT count(*) FROM All_data WHERE Season = ? AND Division = ?
然后用两个参数调用它,像这样:
(query-value dbconn select-test season league)
顺便说一句,你可以用
仔细检查准备语句的参数数量
(length (prepared-statement-parameter-types select-test))
使用 SQLite,类型本身没有任何信息,但长度告诉您参数的数量。
我试图将多个变量传递给 Racket 中的 sqlite 查询。
(define select-test
(prepare dbconn "SELECT count(*) FROM All_data WHERE Season = ? AND Division = '?'"))
(define season 2019)
(define league "E0")
;(query-value dbconn select-test '(season league))
;(query-value dbconn select-test season league)
在线示例显示了列表和单独的变量作为查询的输入,但这些都不适合我。
我收到此列表的消息:
query-value: cannot convert given value to SQL type
given: '(season league)
type: parameter
dialect: SQLite
或 'wrong number of parameters for query' 如果单独完成。
有人可以帮助正确的语法吗?
问题出在您的 SQL 上。本声明:
SELECT count(*) FROM All_data WHERE Season = ? AND Division = '?'
有一个参数(用于季节比较)。 '?'
只是一个包含问号的文字字符串。只需写成 ?
,像这样:
SELECT count(*) FROM All_data WHERE Season = ? AND Division = ?
然后用两个参数调用它,像这样:
(query-value dbconn select-test season league)
顺便说一句,你可以用
仔细检查准备语句的参数数量(length (prepared-statement-parameter-types select-test))
使用 SQLite,类型本身没有任何信息,但长度告诉您参数的数量。