2016-05-24 5 views
2

私はF#プロジェクトを作成しており、オンラインのmysqlデータベースにいくつかのデータベースクエリを実行する必要があります。誰でも助けてくれますか?私はこのようなものが必要ですF#オンラインMySQL DBに接続してクエリを実行

+1

sqlproviderは、あなたは、MySQLに接続できるようになります。 http://stackoverflow.com/questions/20685969/type-provider-for-mysql – s952163

+1

「オンラインmysqlデータベース」とはどういう意味ですか? –

+0

データベースがWebホストのようなWebサーバー上にあり、Wampのようなローカルデータベースではないことを確認します。 –

答えて

4

MySQL用の.NETドライバをインストールする必要があります。次にSQLproviderをインストールします。ドキュメントにはMySQL用のサンプルがあります。あなたは、DBに接続し、このようにそれを照会します:

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 

connstringはこのようなものになります。

[<Literal>] 
let connString = "Server=localhost;Database=HR;User=root;Password=password" 

ます。またhttps://msdn.microsoft.com/visualfsharpdocs/conceptual/walkthrough-accessing-a-sql-database-by-using-type-providers-%5bfsharp%5d

1

をお読みください私もSQLProviderが道だと思いますそうすれば、データベースに対する論理の検証が行われ、データベースが変更されたことに気づくでしょう。

しかし、あなたがしたい場合は、手動で接続することができます

// 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 ->() 
関連する問題