let useConnection expr =
let Expr(conn : MySqlConnection) =
try
try
conn.Open()
with
| :? MySqlException as ex
-> printfn "Exception! %s" ex.Message
expr(conn)
finally
try
conn.Close() |> ignore
with
| :? MySqlException as ex
-> printfn "Exception! %s" ex.Message
using (new MySqlConnection(ConnectionString =
"server = " + MySQLServer + ";
uid = " + MySQLUID + ";
pwd = " + MySQLPW + ";
database = " + MySQLDB + ";
Charset=utf8;")) Expr
member x.reportToDB (msg:string) =
useConnection // <--- SO HERE I WANT TO KNOW WHAT IS conn
(let cmd = new MySqlCommand(Connection = conn)
cmd.CommandText <- ("insert into "+MySQLTable+"(system,dt,logMessage);")
ignore <| cmd.Parameters.AddWithValue("?system", Net.Dns.GetHostName())
ignore <| cmd.Parameters.AddWithValue("?dt", DateTime.Now.ToString())
ignore <| cmd.Parameters.AddWithValue("?logMessage", msg)
try
try
cmd.ExecuteNonQuery() |> ignore
with
| :? MySqlException as ex when ex.Message.Contains("Duplicate entry")
-> printfn "MySQL Duplicate entry Exception: discarding the data set! %s" ex.Message
printfn ""
| :? MySqlException as ex
-> printfn "MySQL Exception, requeing data set and trying again later! %s" ex.Message
reraise()
with
| :? MySqlException as ex
-> printfn "Exception! %s" ex.Message)
Il est difficile à expliquer mais je veux utiliser delegate conn de useConnection à x.reportToDB, comment puis-je le faire?Comment utiliser le paramètre de l'utilisation Expr
merci.
@Tim Robinson, oui je ne sais pas sur conn là et c'est un problème que je veux résoudre, pourquoi vous pensez que lambda est une mauvaise idée ici?
Ce code ne ressemble pas à elle compile actuellement - I ne pense pas que la première ligne devrait être indentée, et le code après votre commentaire doit être une fonction lambda –
lamba est une bonne idée :). Vous n'en utilisez pas actuellement. –