【发布时间】:2021-04-11 06:27:49
【问题描述】:
我在网上找到了这个 SQLHelper,我想用它来运行 SQL 查询。 但是助手想要一个列表而不是字符串。 而且我似乎无法弄清楚如何使 executeNonQuery 工作。
type SqlHelper (connection) =
let exec bind parametres query =
use conn = new SqlConnection (connection)
conn.Open()
use cmd = new SqlCommand (query, conn)
parametres |> List.iteri (fun i p ->
cmd.Parameters.AddWithValue(sprintf "@p%d" i, box p) |> ignore)
bind cmd
member __.Execute = exec <| fun c -> c.ExecuteNonQuery() |> ignore
member __.Scalar = exec <| fun c -> c.ExecuteScalar()
member __.Read f = exec <| fun c -> [ let read = c.ExecuteReader()
while read.Read() do
yield f read ]
let sql = new SqlHelper (connectionString)
我的查询是对表格进行掺杂
我正在尝试这样执行。
let emptyDb =
let query =
"SET NOCOUNT ON
DROP TABLE IF EXISTS #STUFF
...
...
END"
sql.Execute [query ]
这会编译,但是当我执行它时没有任何反应。 有任何想法吗? 提前致谢
编辑:sql.Read 功能完美
let GetToken Id=
sql.Read (fun r -> { token = unbox r.[0] })
[Id;]
"SELECT Token
FROM [dbo].[Token]
WHERE id= 0"
GetToken "1337"
【问题讨论】:
-
您似乎没有为
sql.Execute提供足够的参数 -
@FyodorSoikin 有什么建议吗?我可以让 sql.Read 函数毫无问题地工作。但 Execute 让我白发苍苍。
-
您能否发布一个示例,说明如何使
Read工作? -
@FyodorSoikin 添加:)
标签: sql f# executenonquery