【小白专用24.6.18】C# SqlSugar:连接数据库实现简单的,增、删、改、查

【小白专用 已验证24.6.18】C# SqlSugar操作MySQL数据库实现增删改查-CSDN博客

通过NuGet包管理器搜索SqlSugarMySql还要安装MySql.Data、Newtonsoft.Json)包并安装

SqlSugarClient db = new SqlSugarClient(new ConnectionConfig(){ConnectionString = "server=.;uid=sa;pwd=@jhl85661501;database=SqlSugar4XTest",DbType = DbType.SqlServer,//设置数据库类型IsAutoCloseConnection = true,//自动释放数据务,如果存在事务,在事务结束后释放InitKeyType = InitKeyType.Attribute //从实体特性中读取主键自增列信息});//用来打印Sql方便你调试    
db.Aop.OnLogExecuting = (sql, pars) =>{Console.WriteLine(sql + "\r\n" + db.Utilities.SerializeObject(pars.ToDictionary(it => it.ParameterName, it => it.Value)));Console.WriteLine();};    /*查询*/
var list = db.Queryable<StudentModel>().ToList();//查询所有
var getById = db.Queryable<StudentModel>().InSingle(1);//根据主键查询
var getByWhere = db.Queryable<StudentModel>().Where(it=>it.Id==1).ToList();//根据条件查询
var total = 0;
var getPage = db.Queryable<StudentModel>().Where(it => it.Id == 1).ToPageList(1,2,ref total);//根据分页查询
//多表查询用法 http://www.codeisbug.com/Doc/8/1124/*插入*/
var data = new Student() { Name = "jack" };
db.Insertable(data).ExecuteCommand();
//更多插入用法 http://www.codeisbug.com/Doc/8/1130/*更新*/
var data2 = new Student() { Id =1, Name = "jack" };
db.Updateable(data2).ExecuteCommand();
//更多更新用法 http://www.codeisbug.com/Doc/8/1129/*删除*/
db.Deleteable<StudentModel>(1).ExecuteCommand();

实体类用法

//如果实体类名称和表名不一致可以加上SugarTable特性指定表名
[SugarTable("Student")]
public class StudentModel
{//指定主键和自增列,当然数据库中也要设置主键和自增列才会有效[SugarColumn(IsPrimaryKey=true,IsIdentity =true)]public int Id { get; set; }public string Name { get; set; }
}

根据实体类创建表

db.CodeFirst.SetStringDefaultLength(200/*设置varchar默认长度为200*/).InitTables(typeof(StudentModel));//执行完数据库就有这个表了
[SugarTable("T_DouPoClass")]public class StudentInfo{[SugarColumn(ColumnName = "F_Name",IsPrimaryKey =true)]public string Name { get; set; }[SugarColumn(ColumnName = "F_Gender")]public string Gender { get; set; }[SugarColumn(ColumnName = "F_Class")]public string Class { get; set; }[SugarColumn(ColumnName = "F_Grade")]public string Grade { get; set; }}

SqlSugar是通过Queryable、Updateable、Deleteable和Insertable实现的增删改查。

public static List<StudentInfo> Query(){var db = GetInstance();return db.Queryable<StudentInfo>().ToList();}public static void Insert(StudentInfo student){var db = GetInstance();db.Insertable<StudentInfo>(student).ExecuteCommand();}
public static bool Delete(StudentInfo student){var db = GetInstance();db.Deleteable<StudentInfo>(student).ExecuteCommand();return true;}public static bool Update(StudentInfo student){var db = GetInstance();db.Updateable<StudentInfo>(new StudentInfo {Grade = student.Grade,Class= student.Class,Name= student.Name, Gender="异火"}).UpdateColumns(s => new {s.Gender}).WhereColumns(s => s.Name).ExecuteCommand();return true;}

    class Student{[SugarColumn(IsPrimaryKey = true, IsIdentity = true)]public int Id { get; set; }public string? Name { get; set; }public int Age { get; set; }public string? Home { get; set; }}
 Student student = new Student();student.Name = "小明";student.Age = 20;student.Home = "湖北武汉";db.Insertable(student).ExecuteCommand(); List<Student> students = new List<Student>();students.Add(new Student() { Name = "小红", Age = 25, Home = "福建福州"});students.Add(new Student() { Name = "小钢", Age = 25, Home = "福建厦门" });students.Add(new Student() { Name = "小王", Age = 25, Home = "福建泉州" });students.Add(new Student() { Name = "小绿", Age = 25, Home = "江西南昌" });students.Add(new Student() { Name = "小吴", Age = 25, Home = "湖北襄阳" });db.Insertable(students).ExecuteCommand(); var list = db.Queryable<Student>().ToList();db.Queryable<Student>().Where(it => it.Age > 20).ToList();查单条var single = db.Queryable<Student>().Single(it => it.Id == 1);查字段,以Name为例var list3 = db.Queryable<Student>().Select(it => it.Name).ToList(); 以修改id=3的学生的home为“广东珠海”为例var single = db.Queryable<Student>().Single(it => it.Id == 3);single.Home = "广东珠海";db.Updateable(single).ExecuteCommand();条件删除,以删除id=1为例db.Deleteable<Student>().Where(it => it.Id == 1).ExecuteCommand();根据主键数组删除,以删除id=2和3为例db.Deleteable<Student>().In(new int[] {2, 3}).ExecuteCommand();

SqlSugarClient db => GetInstance();
//执行sql语句,处理
//1.执行sql,转成list
List<teacher> list1 = db.Ado.SqlQuery<teacher>("select * from teacher where tsex=@tsex", new { tsex = "女" });
Console.WriteLine(list1.ToJsonString());
//2.转成dynamic
dynamic list2 = db.Ado.SqlQueryDynamic("select * from UserInfo");
Console.WriteLine(list2.Length);
//3.转成json数据
string list3 = db.Ado.SqlQueryJson("select * from UserInfo");
Console.WriteLine(list3);
//4.返回int
int count = db.Ado.SqlQuery<int>("select count(*) from UserInfo").FirstOrDefault();
Console.WriteLine(count);//5.返回键值对类型
Dictionary<string, string> list4 = db.Ado.SqlQuery<KeyValuePair<string, string>>("select UserID,Name from UserInfo").ToDictionary(q => q.Key, q => q.Value);
Console.WriteLine(list4.ToJsonString());//6.返回List<string[]> 集合
List<string[]> list5 = db.Ado.SqlQuery<string[]>("select  * from teacher where tsex=@tsex", new { tsex = "女" });
Console.WriteLine(list5.ToJsonString());
//返回 DataTable
DataTable dataTable =  db.Ado.GetDataTable("select * from teacher where tsex=@tsex", new { tsex = "女" });SqlSugarClient db => GetInstance();
//更方便的获取第一行第一列
string result1 = db.Ado.GetString(" select  name from UserInfo where UserID=@UserID", new { UserID = 1 });
Console.WriteLine(result1);
int count = db.Ado.GetInt("select count(*) from UserInfo");
Console.WriteLine(count);
double result2 = db.Ado.GetDouble("select avg(degree) from score where cno=@cno ", new System.Data.SqlClient.SqlParameter("@cno", "3-105"));
Console.WriteLine(result2);decimal result3 = db.Ado.GetDecimal(" select avg(degree) from score");
Console.WriteLine(result3);

// 创建待插入数据var data = new bsae_info() { id = 2 ,name = "Sandy" , age = 13};// 插入数据db.Insertable(data).ExecuteCommand();// 执行插入操作db.Ado.ExecuteCommand("INSERT INTO bsae_info (id, name, age) VALUES (@id,@name,@age)",new {id = data.id, name = data.name, age=data.age });

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/31484.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

中国信通院专访镜舟科技:开源商业化走了多远?

据《2023 中国开源发展蓝皮书》显示&#xff0c;随着数字化转型的深入&#xff0c;开源生态在去年快速发展&#xff0c;开源商业化的模式也逐渐成型。镜舟科技作为开源商业化的先行者&#xff0c;也在技术创新和商业拓展中稳步增长。 日前&#xff0c;中国信息通信研究院&…

Python基础教程(二十八):pip模块

&#x1f49d;&#x1f49d;&#x1f49d;首先&#xff0c;欢迎各位来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里不仅可以有所收获&#xff0c;同时也能感受到一份轻松欢乐的氛围&#xff0c;祝你生活愉快&#xff01; &#x1f49d;&#x1f49…

【深度学习】TensorRT模型转换环境

Ubuntu 22.04 LTS、Cuda 12.3、Tensorrt 8.6.1、Python 3.10、A10G GPU 要在 Ubuntu 22.04 LTS 上使用 TensorRT 将模型转换为 TensorRT 格式&#xff0c;您需要安装一些必要的环境和依赖项。以下是详细的步骤&#xff1a; 更新系统&#xff1a; sudo apt update sudo apt upg…

NGINX_十二 nginx 地址重写 rewrite

十二 nginx 地址重写 rewrite 1 什么是Rewrite Rewrite对称URL Rewrite&#xff0c;即URL重写&#xff0c;就是把传入Web的请求重定向到其他URL的过程。URL Rewrite最常见的应用是URL伪静态化&#xff0c;是将动态页面显示为静态页面方式的一种技术。比如 http://www.123.com…

MVVM模式理解(基于Qt分析)

MVVM&#xff08;Model-View-ViewModel&#xff09;软件框架可以有效分离用户界面和业务逻辑&#xff0c;提升代码的可维护性和可测试性。下面我们简要的实现一个MVVM框架示例&#xff0c;并说明其特点和优势。 框架结构 Model&#xff08;模型&#xff09;&#xff1a;负责数…

【Ubuntu开发入门之“悟空派wukongpi/香橙派orangepi H3 linux开发③kernel移植调试“】

Ubuntu开发入门之"悟空派wukongpi/香橙派orangepi H3 linux开发③kernel移植调试 问题描述解决方法获取源码内核适配和编译制作TF卡分区,以备存放各个分区和文件根文件系统拷贝郑重声明:本人原创博文,都是实战,均经过实际项目验证出货的 转载请标明出处:攻城狮2015 Pla…

2024097期传足14场胜负前瞻

2024097期售止时间为6月22日&#xff08;周六&#xff09;20点30分&#xff0c;敬请留意&#xff1a; 本期14场由欧洲杯、美洲杯、美职联组成&#xff0c;1.5以下赔率2场&#xff0c;1.5-2.0赔率10场&#xff0c;其他场次是平半盘、平盘。本期14场难度中等。以下为基础盘前瞻&a…

【JavaScript脚本宇宙】驾驭异步:探索六种流行响应式编程库

掌握数据流的艺术&#xff1a;六种响应式编程库全面比较 前言 本文将对几种流行的JavaScript数据流库进行比较&#xff0c;包括RxJS、Bacon.js、Kefir.js、Most.js、xstream和Highland.js。每种库都有独特的特点和优势&#xff0c;适用于不同的场景。通过了解这些库的功能、使…

涉密文件当废品卖,涉密文件如何安全便捷销毁?

前几天&#xff0c;一位大爷在废品收购站买到四本涉及军事的涉密文件登上热搜&#xff0c;此事源于相关工作人员没有按照涉密文件销毁流程&#xff0c;缺乏保密意识&#xff0c;将200余本涉密资料当做废品出售&#xff0c;导致涉密信息在外部曝光。 无论是在企业内部还是在机关…

合并两个可能为空的List 的方法记录

在日常开发中&#xff0c;我们经常需要将两个列表&#xff08;List&#xff09;合并成一个新的列表。这个任务看似简单&#xff0c;但如果其中一个或两个列表可能为 null&#xff0c;处理起来就需要注意一些细节。本文将介绍一种使用 Java 8 Stream API 的简洁方法来完成这一任…

【APP移动端性能测试】第三节.性能测试工具GT和常见的性能测试点(上)

文章目录 前言一、性能测试工具GT 1.1 性能测试工具GT的基本介绍 1.2 性能测试工具GT的基本使用二、CPU性能测试 2.1 CPU说明 2.2 CPU测试步骤 2.3 监控结果保存到目录文件三、内存性能测试 3.1 内存知识点介绍 3.2 常见的内存问题和现象 …

docker将容器打包提交为镜像,再打包成tar包

将容器打包成镜像可以通过以下步骤来实现。这里以 Docker 为例&#xff0c;假设你已经安装了 Docker 并且有一个正在运行的容器。 1. 找到正在运行的容器 首先&#xff0c;你需要找到你想要打包成镜像的容器的 ID 或者名字。可以使用以下命令查看所有正在运行的容器&#xff…

【0-1系列】从0-1快速了解搜索引擎是什么以及怎么用(上)

友情链接 社区开发版安装部署与使用教程社区版家族V2024.5版本更新说明 START>>1.快速了解搜索引擎 什么是搜索引擎数据库 搜索引擎数据库是一类专门用于数据内容搜索的NoSQL数据库&#xff0c;是非结构化大数据处理分析领域中重要的基础支撑软件。 伴随互联网、移动…

DSP应用市场的大蛋糕,国产厂商能吃下多少?

DSP是数字信号处理器&#xff08;Digital Signal Processor&#xff09;的简称&#xff0c;是一种专门用于高速数学运算的微处理器。DSP能够快速且准确地处理数字信号&#xff0c;同时具备可编程和低功耗等特点&#xff0c;如今在各个领域发挥着越来越重要的作用。 &#xff08…

【目标检测】图解 DETR 系统框图

简略版本 Backbone&#xff1a;CNN backbone 学习图像的 2D 特征Positional Encoding&#xff1a;将 2D 特征展平&#xff0c;并对其使用位置编码&#xff08;positional encoding&#xff09;Encoder&#xff1a;经过 Transformer 的 encoderDecoder&#xff1a;encoder 的输出…

spring-gateway配置说明

在开发过程中遇到的一些配置问题&#xff0c;记录下来以供参考 spring-gateway版本是2.2.9-release,使用的spring cloud dependence 是 Hoxton.SR12 在依赖eureka 服务发现并自动将发现服务器加入到router中的时候&#xff0c;需要指定对应的服务进行添加&#xff0c;根据文档…

技术分享 | 基于 API 解析的 Python 爬虫

最近各大高校纷纷翻拍 Coincidence 抖肩舞&#xff0c;需要对这种流行现象进行数据分析。数据分析首先需要有数据&#xff0c;本文介绍了爬取 B 站相应视频的评论、弹幕、播放量、点赞数等数据的方法。爬虫有多种实现方法&#xff0c;大型的网络爬虫多基于成熟的爬虫框架&#…

vue 登录

1.创建项目 Set-ExecutionPolicy RemoteSigned npm install -g yarn yarn add axios yarn add element-pluspackage.json {"name": "tom6","version": "0.1.0","private": true,"scripts": {"serve": &…

域内攻击手法——域内用户枚举和密码喷洒

一、域内用户枚举 1、域内用户枚举原理 域内用户枚举可以在无域内有效凭据的情况下&#xff0c;枚举出域内存在的用户名&#xff0c;并对其进行密码喷洒攻击&#xff0c;以此获得域内的有效凭据&#xff0c;在 Kerberos 协议认证的 AS-REQ 阶段&#xff0c;客户端向 AS 发送的…

交易中的特殊存在

在交易的广袤天空中&#xff0c;有一群特殊的存在——他们&#xff0c;是Eagle Trader。 他们以鹰眼般的洞察力&#xff0c;捕捉市场的微妙变化&#xff0c;每一次决策都如同猎食者般精准&#xff1b;他们运用策略&#xff0c;如同雄鹰在风中翱翔&#xff0c;利用风向&#xf…