Я застрял в данный момент, пытаясь выяснить способ вставки в SQL Server из F #.
У меня есть функция F #, которая перебирает все файлы в папке, следуя заданному пользователем шаблону.Затем я могу использовать возвращенные данные, чтобы поместить их в список или (в идеале) вставить в базу данных.
У меня уже есть работающая функция вставки в sql, которая работает правильно:
let execNonQuery conn s =
let comm =
new SqlCeCommand(s, conn)
try
comm.ExecuteNonQuery() |> ignore
with e ->
printf "Error : %A\n" e
let string = "insert into MyTable (MyColumn) values ('test .. again')"
execNonQuery conn string; // works
Я пытаюсь заставить этот метод работать должным образом:
let rec getAllFiles dir pattern =
seq { yield! Directory.EnumerateFiles(dir, pattern)
for d in Directory.EnumerateDirectories(dir) do
yield! getAllFiles d pattern }
let getApplications (dir : string) (extension : string) =
getAllFiles dir extension
//|> Seq.toList // If I need to create a list of returned values
|> Seq.iter (fun s -> SQLInsertString s) // This does not work as it complains about the function not being of type unit
Если я использую только Seq.toList
и вызываю функцию, как показано ниже, она работает:
getApplications "C:\Admin" "*.txt" // works
Другая вещь, которую я не понимаю, - как создать рабочую команду вставки, которая принимает строку для значения.Например:
let SQLInsertString s = "insert into MyTable (MyColumn) values (%s)" //does not work