F#: MySQLへのアクセス (少々変更)

a0002_009631

先日「F#: MySQLへのアクセス」という記事でF#からMySQLへアクセスするプログラムを書いてみましたが、ちょっとだけ修正。

といっても本質的なところではなく、パイプライン演算子を使ってみた、というだけ。(あとは改行位置を変えてみたとか細々ありますけど、本質的な修正はなし)

open System;
open System.Data.Common;

type HorseInfo(kettoTorokuBango : String, bamei : String) = 
    let kettoTorokuBango = kettoTorokuBango
    let bamei = bamei

    new () = HorseInfo("", "")

    new (reader : DbDataReader) =
        HorseInfo(reader.GetString(0), reader.GetString(1))

    member HorseInfo.show = printfn "%s\t%s" kettoTorokuBango bamei

    static member getCommand (conn : DbConnection) : DbCommand =
        let command = conn.CreateCommand()
        command.CommandText 
            <- @"select ketto_toroku_bango,bamei from jvd_kyosoba_master " +
               @"where ketto_toroku_bango=@KettoTorokuBango"
        let paramKettoTorokuBango = command.CreateParameter()
        paramKettoTorokuBango.ParameterName <- @"KettoTorokuBango"
        ignore (command.Parameters.Add(paramKettoTorokuBango))
        command.Prepare()
        command

    static member create (cmd : DbCommand) (kettoTorokuBango : String) : HorseInfo =
        cmd.Parameters.Item(@"KettoTorokuBango").Value <- kettoTorokuBango
        use reader = cmd.ExecuteReader()
        if reader.Read() then HorseInfo(reader) else HorseInfo()

let getHorseInfoArray (conn : DbConnection) (kettoTorokuBango : String []) : HorseInfo [] =
    use command = HorseInfo.getCommand conn
    Array.map (HorseInfo.create command) kettoTorokuBango

[<EntryPoint>]
let main argv =
    use conn = new MySql.Data.MySqlClient.MySqlConnection
                    @"userid=XXXX;password=XXXX;database=pckeiba;Host=XXXX"
    conn.Open()
    getHorseInfoArray conn argv |> Array.iter (fun (x : HorseInfo) -> x.show)

    0 // 整数の終了コードを返します
スポンサーリンク

フォローする

スポンサーリンク