本文来自 iteye@fairjm 转截请注明出处
之前写过一篇用SQLProvider
进行数据库连接的,但实际使用的时候发现兼容性不是很好,在用mysql的时候很多表都找不到,要反复rebuild.
直接使用ADO.NET
的话就显得麻烦.
来看一下ADO.NET
一个查询到例子
let cStr =@"Server=地址;Port=端口;Database=数据库名称;Uid=用户名;Pwd=密码;"
use conn =newMySqlConnection(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()
如果要用参数化的话还需要以下代码来设置SqlCommand
//创建SqlCommand对象SqlCommand cmd = conn.CreateCommand();
//默认就是text
cmd.CommandType=CommandType.Text;
//sql语句
cmd.CommandText="select * from products = @ID";
cmd.Parameters.Add("@ID",SqlDbType.Int);
//给参数sql语句的参数赋值
cmd.Parameters["@ID"].Value=1;
作为常常写脚本的工具,我对数据库查询的需求是使用简单方便,因为是写脚本,所以不会涉及到很多表的JOIN
,一对多,多对多的处理等等,能方便读取行数据就可以了.
这一点Dapper可以很好满足.Dapper可以使用dynamic object
作为查询参数和返回结果.
但FSharp似乎没有直接使用dynamic object
的方式(有的话欢迎打脸...没找着),这里可以借用第三方的项目来.比如FSharp.Interop.Dynamic
.
使用之后构建查询就方便多了:
let query =ExpandoObject()
query?userId <-1
也可以直接解析返回结果
需要的扩展:
Install-Package FSharp.Interop.Dynamic
Install-Package MySql.Data -Version 6.9.9
Install-PackageDapper
代码:
open MySql.Data.MySqlClient
open FSharp.Interop.Dynamic
open Dapper
open System
open System.Dynamic
let getConnection (addr, user,pass, db, port)=
let builder =newMySqlConnectionStringBuilder()
builder.Server<- addr
builder.UserID<- user
builder.Password<-pass
builder.Database<- db
builder.Port<- port
let conn =newMySqlConnection(builder.ConnectionString)
conn.Open()
conn
let conn = getConnection("","","","",3306)
let query =ExpandoObject()
query?userId <-1
let obj = conn.QueryFirst("select * from user where userid = @userId", query)
let objs = conn.Query("select * from user limit 10")
printfn "%A" obj?username
objs
|>Seq.iter (fun e -> printfn "%s" e?username)
conn.Close()
对比上面ADO.NET
的例子 使用就比较简单直接了~
还有one to many的例子有点长 可以看gist的代码: https://gist.github.com/fairjm/8d2c8b2fd8db549364447a78d2bdad4f
本文来自 iteye@fairjm 转截请注明出处
相关推荐
1、开源Dapper、Dapper 2、支持各种数据库引擎操作 3、不需要写sql语句,利用ORM映射自动生成sql
Dapper访问多数据库,使用方法参考单元测试UnitTest。 Oracle免客户端访问
使用dapper对数据库进行操作,使对数据库的增删改查变得非常简单,且将数据库配置文件放在外面,可以灵活地更换数据库连接地址
Dapper是.NET下一个ORM,它和Entity Framework或Nhibnate不同,属于轻量级的,并且是半自动的。也就是说实体类都要自己写。它没有复杂的配置文件,一个单文件就可以了。
.net5 dapper封装操作数据库
Dapper封装类,对dapper的增删查改和存储过程进行封装
vs2010 版本使用,dapper,cs资源文件,4.0框架下dapper最高版本
如何在.NET Core中使用Dapper操作Mysql数据库呢,让我们跟随镜头(手动下翻)一看究竟。 配置篇 俗话说得好,欲要善其事必先利其器。首先,我们要引入MySql.Data 的Nuget包。有人可能出现了黑人脸,怎么引入。也罢,看...
WinForm程序源码,使用Dapper读取mssql数据库,控件使用devexpress,比较简单,一看就明白,小白也没有问题。欢迎下载查看。https://blog.csdn.net/caifox/article/details/135430855 这里有我写的一步一步操作的...
【ASP.NET编程知识】.NET Core Dapper操作mysql数据库的实现方法.docx
C# Dapper增删改查使用示例源码带数据库脚本
主要是自己学习dapper的时候使用,对没有接触过dapper的童鞋很有用的。
.NETCore使用Dapper操作...有了.NETCoreMySQLConnector我们可以直接使用ADO.NET操作数据库。 目前EFCore暂时不支持MySQL,本篇主要讲解使用Dapper操作MySQL。 第三方MySQLConnector:https://github.com/Sapient
使用Dapper进行数据库的增删改查操作,只实现核心功能,适合初学者了解Dapper的基本使用方法。 VS中使用NuGet安装Dapper即可。 数据库增加表Users,对应的sql代码见压缩包。 修改web.config数据库连接字符串...
根据mysql访问数据库,动态生成数据类,并生成引用Dapper方法的相关类,以及生成Mysql的存储过程和访问方法,动态生成,不用多次修改,已完善,带注释。添加项目中可直接运行
C#使用Dapper的使用,示例中有增删查改等操作。以及事务的处理
使用Dapper进行CRUD操作变得简单。 视窗 Linux NuGet 我的Get 测试覆盖率 Dommel使用IDbConnection接口上的扩展方法为CRUD操作提供了方便的API。 SQL查询是根据您的POCO实体生成的。 Dommel还支持将LINQ表达式...
通过完整修改好的T4模板自动对db数据库中的表数据生成类文件和数据读写文件,针对sqlite的数据库采用Dapper的读写方式,其中包括查询,创建视图,创建表,修改数据,事务删除等,带完整注释,vs2015可直接运行项目,...
使用Dapper封装的项目底层代码,免去每次底层copy,数据库结构变更修改底层的痛苦,详细看代码及文档
封装Dapper dbContext类,对Dapper 的增删查改进行封装