【小白专用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…

NGINX_十二 nginx 地址重写 rewrite

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

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…

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…

索尼MXF文件断电变2G恢复方法(PXW-Z280V)

PXM-Z280V算是索尼比较经典的机型&#xff0c;也是使用MXF文件格式的机型之一。近期接到很多例索尼MXF量突然不正常的案例&#xff08;如变成512字节或者2G&#xff09;&#xff0c;下面来看下这个案例。 故障存储: 128G存储卡 /文件系统&#xff1a;exFAT 故障现象: 客户反…

兴业严选|朝阳、大兴、丰台、等5.9折起总有一套适合你~

近日于上海&#xff0c;出现了一桩令人始料未及之事。一套地处浦东、面积达 245.7 平方米的住宅进行挂网拍卖。 出乎意料的是&#xff0c;此套房子受到众多买家的青睐&#xff0c;历经一番激烈的竞价竞争&#xff0c;最终以 1766 万元的价格成交&#xff0c;折合每平方米 7187…

通俗范畴论3 从特指对象到对象

同一性问题 如前所述&#xff0c;特指对象有个名字&#xff0c;并用一个点表示&#xff08;相当于另一个名字&#xff09;&#xff0c;它可以作为箭头的起点或终点&#xff0c;箭头的多少&#xff0c;以及箭头的起点和终点根据表达的需要而定&#xff0c;没有特别的约定。因此…

玄机平台流量特征分析-蚁剑流量分析

前言 蚁剑的流量特征 (1)每个请求体都存在ini_set(“display_errors”, “0”);set_time_limit(0)开头。并且后面存在base64等字符 (2)响应包的结果返回格式为&#xff1a; 随机数 响应内容 随机数 看一下题目要求 步骤1.1 这里要求我们找到木马的连接密码&#xff0c;…

智能猫砂盆效果这么惊艳吗?绝对不踩雷的智能猫砂盆合集来啦

身为一个铲屎官&#xff0c;我深受“天天铲屎”的困扰。想要片刻放松都不行&#xff0c;因为猫砂盆一旦堆积屎尿&#xff0c;尤其在夏天&#xff0c;会迅速发臭&#xff0c;滋生细菌。对猫而言&#xff0c;不清理猫砂盆会让它们感到不适&#xff0c;可能引发疾病或拒绝使用猫砂…

如何在Ubuntu上安装WordPress

如何在Ubuntu上安装WordPress 执行系统更新 apt update && apt upgrade第一步 安装 Apache apt install apache2确认 Apache 安装是否成功. systemctl status apache2安装成功后 打开浏览器输入 http://server-ip-address 第二步 安装 MySQL apt install mariad…

解决uniapp h5 本地代理实现跨域访问及如何配置开发环境

&#x1f9d1;‍&#x1f4bb; 写在开头 点赞 收藏 学会&#x1f923;&#x1f923;&#x1f923; 如何解决uniapp H5本地代理实现跨域访问&#xff1f; 1.第一种解决方法&#xff1a; 直接创建一个vue.config.js文件&#xff0c;并在里面配置devServer&#xff0c;直接上…