F#连接到在线MySQL数据库执行查询

F#连接到在线MySQL数据库执行查询,mysql,sql,database,f#,connect,Mysql,Sql,Database,F#,Connect,我正在做一个F#项目,需要对在线mysql数据库进行一些数据库查询。谁能帮帮我吗。我需要这样的东西 \\ Connect to DB let servername = "localhost" let username = "username" let password = "password" \\ Code that connects to db \\ Print error message if can connect \\ Qu

我正在做一个F#项目,需要对在线mysql数据库进行一些数据库查询。谁能帮帮我吗。我需要这样的东西

    \\  Connect to DB
    let servername = "localhost"
    let username = "username"
    let password = "password"
    \\ Code that connects to db
    \\ Print error message if can connect 

    \\ Query 
    let query = "SELECT * FROM table ..."
    \\ Code that executes query 
    \\ Error Message if query not executed  

您应该为MySQL安装.NET驱动程序。然后安装SQLprovider。文档中有MySQL的示例。您将连接到数据库并按如下方式查询它:

type sql = SqlDataProvider<
                dbVendor,
                connString,
                ResolutionPath = resPath,
                IndividualsAmount = indivAmount,
                UseOptionTypes = useOptTypes,
                Owner = "HR"
            >
let ctx = sql.GetDataContext()

let employees = 
    ctx.Hr.Employees 
    |> Seq.map (fun e -> e.ColumnValues |> Seq.toList)
    |> Seq.toList
[<Literal>]
let connString  = "Server=localhost;Database=HR;User=root;Password=password"
您还应该阅读

我还想说的是,这是一种方法,因为您有一个针对数据库的逻辑验证,您会注意到数据库是否发生了更改

但是,如果您想:

// Reference Nuget package MySql.Data
//#r @"./../packages/MySql.Data/lib/net40/MySql.Data.dll"

open System
open MySql.Data.MySqlClient

let cstr = "server = localhost; database = myDatabase; uid = username;pwd = password"

let ExecuteSqlAsync (query : string) parameters =
  use rawSqlConnection = new MySqlConnection(cstr)
  async {
    do! rawSqlConnection.OpenAsync() |> Async.AwaitIAsyncResult |> Async.Ignore
    use command = new MySqlCommand(query, rawSqlConnection)
    parameters |> List.iter(fun (par:string*string) -> command.Parameters.AddWithValue(par) |> ignore)
    let! affectedRows = command.ExecuteNonQueryAsync() |> Async.AwaitTask
    match affectedRows with
    | 0 -> "ExecuteSql 0 rows affected: " + query |> Console.WriteLine
           ()
    | x -> ()
  }

let ExecuteSql (query : string) parameters =
    use rawSqlConnection = new MySqlConnection(cstr)
    rawSqlConnection.Open()
    use command = new MySqlCommand(query, rawSqlConnection)
    parameters |> List.iter(fun (par:string*string) -> command.Parameters.AddWithValue(par) |> ignore)
    let affectedRows = command.ExecuteNonQuery()
    match affectedRows with
    | 0 -> "ExecuteSql 0 rows affected: " + query |> Console.WriteLine
           ()
    | x -> ()

sqlprovider将允许您连接到MySQL。你所说的在线mysql数据库是什么意思?数据库在web服务器上,就像web主机一样,而不是像Wamp一样的本地数据库。Wamp是什么?如果您知道主机名并能够解析它,您应该仍然能够连接。几乎所有的数据库都在某台服务器上。你有错误吗?你的问题解决了吗?