首页 > 数据库 >C#处理参数化SQL

C#处理参数化SQL

时间:2023-06-06 14:01:22浏览次数:53  
标签:Users C# UserID Email connection 参数 SQL new public

我们都知道ORM全称叫做Object Relationship Mapper,也就是可以用object来map我们的db,而且市面上的orm框架有很多,其中有一个框架

叫做dapper,而且被称为the king of ORM。

一:为什么选择Dapper

1. 性能优越:

    其实在各大网站上,我们大概都会看到这样的一个对比效果图,在超过500次poco serialization的过程中所表现的性能,我们发现dapper是第二名,

当然第一名谁也无法超越,越底层的当然久越快,同时也就越麻烦。

 

2.实测代码

 

 创造测试数据

CREATE TABLE [dbo].[Users](
    [UserID] [int] IDENTITY(1,1) NOT NULL,
    [UserName] [varchar](50) NULL,
    [Email] [varchar](100) NULL,
    [Address] [varchar](100) NULL,
 CONSTRAINT [PK_Users] PRIMARY KEY CLUSTERED 
(
    [UserID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

1.webconfig配置数据库连接串

 

 2.贴代码

public class DapperController : Controller
    {
        // GET: Dapper
        public ActionResult Index()
        {
            string connetionString = ConfigurationManager.ConnectionStrings["conn"].ToString();
            IDbConnection connection = new SqlConnection(connetionString);
            //var result = connection.Execute("Insert into Users values (@UserName, @Email, @Address)",new { UserName = "李四", Email = "[email protected]", Address = "上海" });
            //批量插入
            //InsertBulk(connection);
            //批量修改
            //UpdateBulk(connection);
            //查询
            //Query(connection);
            //删除
            //Del(connection);
            return View();
        }
        /// <summary>
        /// 批量插入
        /// </summary>
        public void InsertBulk(IDbConnection connection)
        {
            var usersList = Enumerable.Range(0, 10).Select(i => new Users()
            {
                Email = i + "qq.com",
                Address = "测试地址",
                UserName = i + "测试"
            });
            var result = connection.Execute("Insert into Users values (@UserName, @Email, @Address)", usersList);
        }
        /// <summary>
        /// 批量修改
        /// </summary>
        public void UpdateBulk(IDbConnection connection)
        {
            List<Users> usersList = new List<Users>();
         
            for (int i = 1; i < 11; i++)
            {
                Users users = new Users();
                users.UserID = i;
                users.UserName = i + "张三";
                users.Email = i+"@163.com";
                users.Address = i + "张三的住址";
                usersList.Add(users);
            }
            var result = connection.Execute("update Users set UserName=@UserName,Email=@Email,Address=@Address where UserID=@UserID", usersList);
        }
        /// <summary>
        /// 查询
        /// </summary>
        /// <param name="connection"></param>
        public void Query(IDbConnection connection)
        {
            int[] myArr = new int[] { 1, 2, 3,4,5,6,7,8,9,10 };
            var query = connection.Query<Users>("select * from Users where UserID IN @UserID",new { UserID = myArr });
        }
        /// <summary>
        /// 批量进行修改
        /// </summary>
        /// <param name="connection"></param>
        public void Del(IDbConnection connection) {
            int[] myArr = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
            var result = connection.Execute("delete from Users where UserID IN @UserID", new { UserID = myArr });
        }
    }

    public class Users {
        public int UserID { get; set; }
        public string Email { get; set; }
        public string Address { get; set; }
        public string UserName { get; set; }

    }
/// <summary>
        /// 查询
        /// </summary>
        /// <param name="connection"></param>
        public void Query(IDbConnection connection)
        {
            int[] myArr = new int[] { 1, 2, 3,4,5,6,7,8,9,10 };
            var query = connection.Query<Users>("select * from Users where UserID IN @UserID",new { UserID = myArr });
            connection.Query<Users>("select * from Users where UserID IN @UserID",new { UserID = myArr }).ToList();
            connection.Query<Users>("select * from Users where UserID IN @UserID",new { UserID = myArr }).SingleOrDefault();
        }

 

标签:Users,C#,UserID,Email,connection,参数,SQL,new,public
From: https://www.cnblogs.com/yangdunqin/p/17460355.html

相关文章

  • 考古笔记14:访问控制列表ACL详解(真的很详细)
    访问控制列表 ACL(AccessControlList,访问控制列表)        技术从来都是一把双刃剑,网络应用与互联网的普及在大幅提高企业的生产经营效率的同时,也带来了诸如数据的安全性,员工利用互联网做与工作不相干事等负面影响。如何将一个网络有效的管理起来,尽可能的降低网络所带......
  • tscconfig.json--ts配置文件
    {//include用来指定那些需要被编译的ts文件//exclude用来指定那些不需要被编译的ts目录//默认不被编译的:["node_modules","bower_components","jspm_packages"]"include":[/***表示:任意目录*表示:任意文件*/"./src/**/*"],......
  • Elasticsearch专题精讲—— REST APIs —— Document APIs —— Update API
    RESTAPIs——DocumentAPIs——UpdateAPIhttps://www.elastic.co/guide/en/elasticsearch/reference/8.8/docs-update.htmlUpdatesadocumentusingthespecifiedscript.使用指定的脚本更新文档。1、Request(请求)https://www......
  • How do you display code snippets in MS Word preserving format and syntax highlig
    HowdoyoudisplaycodesnippetsinMSWordpreservingformatandsyntaxhighlighting?回答1Hereisthebestway,forme,toaddcodeinsideword:GotoInserttab,Textsection,clickObjectbutton(it'sontheright)ChooseOpenDocumentTextwhic......
  • Item 1: Consider static factory methods instead of constructors
    实际应用:packagejava.lang;publicfinalclassBooleanimplementsjava.io.Serializable,Comparable<Boolean>{publicstaticfinalBooleanTRUE=newBoolean(true);publicstaticfinalBooleanFALSE=newBoolean(false);....privatef......
  • 共话出海、布局全球,融云WICC2023 · 泛娱乐出海嘉年华广州收官!
    (移步公众号点击图片三折购买《社交泛娱乐出海作战地图》)6月2日,“WICC·泛娱乐出海嘉年华”在广州成功举办,圆满收官。关注【融云全球互联网通信云】了解更多本届嘉年华由高端峰会、圆桌会议、露营派对三部分组成,融云CEO董晗、白鲸出海创始人兼CEO魏方丹;融云CTO岑裕、Goog......
  • 2) Abstract Factory Pattern
    类别: CreationalPattern问题/动机:如何创建一套父类的问题情形一:混淆,且不能察觉//下面这个方法本来是要建造一辆宝马汽车,但是因为零部件太多,粗心大意误用了奔驰的零件。publicCarcreateBMWCar(){Part1p1=newcom.bmw.Part1();[...]......
  • 1) Factory method pattern
    类别: CreationalPattern问题/动机如何创建一套子类的问题(父类引用指向子类实例)情形1:一个方法返回一个具体的子类极端情况:1万个子类需要一万个方法吗极端情况:如过再扩展一万个子类,还需要再增加一万个方法吗极端情况:虽然有一万个子类,但只需要用到其中一个,其他9999个干陪着......
  • 9) Composite Pattern
    类别: StructualPattern问题: 方案:   示例: importjava.util.ArrayList;importjava.util.List;publicclassCompositePatternDemo{publicstaticvoidmain(String[]args){Bodysun=newBody("太阳","恒星",1392000000);......
  • 8) Filter/Criteria Pattern
    类别: StructualPattern问题: 方案:   示例: importjava.util.ArrayList;importjava.util.HashSet;importjava.util.List;importjava.util.Set;publicclassCriteriaPatternDemo{publicstaticvoidmain(String[]args){List<Person>p......