F# Parameterized Insert Sql

Wahid Masud

Trying to understand how to parameterize query with SqlCommandProvider. So far I've got this

[<Literal>]
let connectionString = @"Data Source=.\SQL2019;Initial Catalog=MyDb;Trusted_Connection=True;"

type InsertCommand = 
    SqlCommandProvider<"INSERT INTO Category (Name, Value, Website) VALUES (@name, @value, @website)", connectionString, SingleRow = true>

let cmdInsert = new InsertCommand()

let insertCategories (data: seq<string * string>) =
    data
    |> Seq.iter
        (
            fun x ->
                cmdInsert.Execute(name = fst x, value = Int32.Parse(snd x), website = "www.example.com") |> ignore
        )

But on the line new InsertCommand() I'm getting this error

The member or object constructor 'SqlCommandProvider,CommandText="...",ConnectionStringOrName="...",SingleRow="True"'
 does not take 0 argument(s). An overload was found taking 2 arguments

Can someone please explain? If not, can someone please give an example on how to do parameterized insert query?

Tomas Petricek

The error message is telling you that the you are missing an argument for the constructor of the provided type, i.e. your InsertCommand type. I do not have a SQL database to try this, but the type provided by SqlCommandProvider should have an overload that takes a connection string and (optionally) a timeout.

The following should do the trick:

let cmdInsert = new InsertCommand(connectionString)

Collected from the Internet

Please contact [email protected] to delete if infringement.

edited at
0

Comments

0 comments
Login to comment

Related