不只是MSSQL F#連線MySql
F#連線MSSQL是一件非常自然的事,微軟官方提供了很多方便的類庫,比如SqlDataConnection
和SqlEntityConnection
可以實現非常方便的連線(只需要連線字串即可)和操作(Linq,F#的query expression)。
而對於MySql,這肯定不是由微軟自己來做,但是也並不麻煩,這裡介紹兩種方式。
關於連線字串
可以從這裡找MySql的:
http://www.connectionstrings.com/mysql-connector-net-mysqlconnection/
MySql的Driver也帶了MySqlConnectionStringBuilder
類方便構建。
使用MySql的Driver提供的工具
是ADO.NET的方式,操作比較簡單。
唯一需要裝的三方庫是Mysql.Data
,使用nuget或者直接下載dll均可
PM> Install-Package MySql.Data
加上System.Data
,System.Configuration
和System.Transaction
引用即可正常工作。
(圖上忘記圈System.Configuration
了)
程式碼如下:
[<EntryPoint>]
let main argv =
let cStr = @"Server=地址;Port=埠;Database=資料庫名稱;Uid=使用者名稱;Pwd=密碼;"
use conn = new MySqlConnection(cStr)
let command = conn.CreateCommand(CommandText = "SELECT * FROM user LIMIT 1",
CommandType = CommandType.Text)
conn.Open()
use reader = command.ExecuteReader()
let idOrder = reader.GetOrdinal("userid")
if reader.Read() then
// int 可以用string
printfn "%s" <| reader.GetString(idOrder)
printfn "%d" <| reader.GetInt32("userid")
printfn "%s" <| reader.GetString("username")
printfn "%A" <| reader.GetDateTime("created")
// date 也可以用string
printfn "%s" <| reader.GetString("created")
reader.Close()
conn.Close()
0 // return an integer exit code
連線字串也可以用提供的類生成:
let str = new MySqlConnectionStringBuilder()
str.Server <- "伺服器地址"
str.Port <- 埠
str.Database <- "資料庫"
str.UserID <- "使用者名稱"
str.Password <- "密碼"
printfn "%s" str.ConnectionString
只展示了查詢,其他的增刪改一樣可以操作,但用ADO.NET程式碼有點煩所以就沒有多寫,下面介紹更方便的一種方法。
使用SqlProvider
來自於開源專案 F# Data
使用起來更為簡單。
需要的依賴如圖
MySql的driver也是需要的
程式碼更加直接 因為使用了type provider 所以不需要自己另外建實體即可使用
open FSharp.Data.Sql
//使用 type provider 生成連線資料庫的型別
type SQL = SqlDataProvider<ConnectionString = "server=;port=;database=works;user id=;password=",
DatabaseVendor = Common.DatabaseProviderTypes.MYSQL,
ResolutionPath = @"D:\datadll"> //這個位置是存放mysql driver dll的位置
//得到上下文
let ctx = SQL.GetDataContext()
let fetch name =
//查詢直接使用上下文即可 注意 ``[works].[user]``是智慧提示的 編譯期可知
//查詢使用query表示式
query {
for user in ctx.``[works].[user]`` do
where (user.username = name)
select user
head
}
[<EntryPoint>]
let main argv =
//插入使用Create()方法
let newUser = ctx.``[works].[user]``.Create()
newUser.username <- "cc"
//最後Update執行
ctx.SubmitUpdates()
printfn "%A" argv
0 // return an integer exit code
使用SqlProvider
會更簡單一點,在做一些MySql資料庫相關的小任務時(比如根據資料生成條形圖(配合F# Charting),做一些資料的彙總CSV生成等)更為快捷。
相關文章
- php連線mssql測試檔案PHPSQL
- python pymssql連線MSSQL以及無法連線解決方法PythonSQL
- jive連線mssql2000報錯SQL
- Linux下連線MSSQL之安裝FreeTDSLinuxSQL
- Qt中通過ODBC連線MSSQL資料庫QTSQL資料庫
- MYSQL語法:左連線、右連線、內連線、全外連線MySql
- GO 連線 MySQLGoMySql
- JDBC連線mysqlJDBCMySql
- mysql 連線oracleMySqlOracle
- MySQL字串連線MySql字串
- C連線MySQLMySql
- MySQL筆記3——內連線/外連線、多表連線MySql筆記
- mysql 左連線,右連線,內連結,exists等MySql
- JPA配置mysql連線MySql
- Python 連線 MySQLPythonMySql
- MySQL連線數管理MySql
- 06 建立MySQL連線MySql
- Java JDBC連線MYsqlJavaJDBCMySql
- kettle連線本地MYSQLMySql
- mysql左外連線MySql
- python連線MySQLPythonMySql
- 使用pyMySql 連線mysqlMySql
- mysql 的連線方式MySql
- mysql最大連線數MySql
- 遠端連線MYSQLMySql
- mysql 連線異常MySql
- R 連線 MySQL(windows)MySqlWindows
- IDEA連線MySQLIdeaMySql
- mysql階段04 連線工具, 連線方式, 啟動關閉mysqlMySql
- mysql INNER JOIN、LEFT JOIN、RIGHT JOIN;內連線(等值連線)、左連線、右連線MySql
- 用php在linux下連線mssql2000(轉)PHPLinuxSQL
- mac開啟mysql,navicat連線mysqlMacMySql
- python 怎麼連線 sql server,不是連線 mysqlPythonServerMySql
- golang連線MySQL時候的連線池設定GolangMySql
- 連線mysql時提示is not allowed to connect不允許連線MySql
- CodeSmith 一、連線MysqlMITMySql
- django怎麼連線mysqlDjangoMySql
- sqlyog怎麼連線mysqlMySql