首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ExecuteNonQuery来自SQLHelper

ExecuteNonQuery来自SQLHelper
EN

Stack Overflow用户
提问于 2021-01-05 13:38:38
回答 1查看 127关注 0票数 1

我在网上找到了这个SQLHelper,我想用它来运行一个SQL查询。但是助手需要一个列表而不是一个字符串。我似乎想不出如何使executeNonQuery工作。

代码语言:javascript
复制
   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)

我所拥有的查询是用于掺杂表。

我正试着这样执行。

代码语言:javascript
复制
let emptyDb =
    let query =
    "SET NOCOUNT ON
      DROP TABLE IF EXISTS #STUFF
      ...
      ...    
      END"
sql.Execute [query ]

这是编译的,但是当我执行它时什么也不会发生。有什么想法吗?提前感谢

编辑: sql.Read功能工作完美

代码语言:javascript
复制
let GetToken Id= 
    sql.Read (fun r -> { token = unbox r.[0] })
             [Id;] 
             "SELECT Token
             FROM [dbo].[Token]
             WHERE id= 0"

GetToken "1337"
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-05 15:02:24

您没有为sql.Execute提供足够的参数。

仔细观察:

  • exec采用三个参数-- bindparametres (顺便说一句),以及query
  • In --您给它一个参数的主体-- bind
  • Therefore,Execute的结果是一个仍然期望其他两个参数的函数--当您调用sql.Execute时,只给它一个参数- [query],它最终将绑定到parametres

因此,调用sql.Execute [query]的结果是另一个函数,它仍然期望在执行其主体之前提供最终参数。实际上,如果您密切关注编译器警告,您将看到编译器实际上告诉您的是:

这个表达式是一个函数值,即缺少参数。它的类型是。

若要修复,请提供正确的参数。从我看到的查询中的一小部分判断,我假设它不应该有任何parametres,所以我将在那里放置一个空列表:

代码语言:javascript
复制
sql.Execute [] query
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65580012

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档