【小白专用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 });

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

计数类DP——AcWing 900. 整数划分

计数类DP 定义 计数类DP主要是通过动态规划的方法来计算满足特定条件的方案数、组合数等数量相关的问题。 运用情况 需要计算不同排列、组合或情况的数量。问题具有明显的阶段性&#xff0c;且每个阶段的选择会对后续阶段产生影响。可以通过逐步构建较小规模问题的解来推导…

mumu 模拟器如何模拟指纹识别?

最近在帮朋友解决一些任务时&#xff0c;有些比较复杂的任务需要批量使用模拟器&#xff0c;但是模拟器存在一个缺点&#xff0c;就是缺少很多物理功能&#xff0c;比如说陀螺仪、温度传感器和生物识别模块等等&#xff0c;但是有些任务是需要这些功能的。没有办法&#xff0c;…

vue3-openlayers 使用tianditu,wmts和xyz等source加载天地图切片服务

本篇介绍一下使用vue3-openlayers加载天地图切片&#xff0c;三种方法&#xff1a; 使用tianditu&#xff08;ol-source-tianditu内部实现其实用的wmts&#xff09;使用wmts&#xff08;ol-source-wmts&#xff09;使用xyz&#xff08;ol-source-xyz&#xff09; 1 需求 vue…

为什么动态代理接口中可以不加@Mapper注解

为什么动态代理接口中可以不加Mapper注解 如下图&#xff1a; 我们上面的UserMapper上面没有加Mapper注解&#xff0c;按道理来说UserMapper这个类应该是注入不到IOC容器里面的&#xff0c;但是为什么我们程序的运行效果仍然是正常的呢&#xff1f;这是因为你的启动类上加了m…

zabbix“专家坐诊”第242期问答

问题一 Q&#xff1a;snmp检查用的什么性能啊&#xff1f;设备多了就检测失败&#xff0c;实际是能通的。 A&#xff1a;把大批量请求取消&#xff0c;把异常获取不到的监控项都禁用 Q&#xff1a;是这个吧&#xff0c;显示不一样。 A&#xff1a;什么版本&#xff1f;用的是v3…

ggpicrust2包:简化和直观化微生物功能预测分析

简介 ggpicrust2是一个强大的R语言包&#xff0c;旨在简化和直观化PICRUSt2输出的分析。通过预定义的图表和函数&#xff0c;研究人员可以轻松生成关于微生物功能预测的统计图&#xff0c;并提供丰富的自定义选项。本文将演示如何使用ggpicrust2包进行分析和可视化。 安装ggp…

VBA学习(9):按指定名单一键删除工作表

今天继续给大家聊VBA编程中工作表对象的常用操作&#xff0c;主要内容是如何批量删除工作表&#xff1b;也就是删除单个工作表、删除全部工作表和删除指定名单内的工作表。 1.删除单个工作表 删除工作表需要使用到工作表对象的delete方法&#xff0c;语法格式如下&#xff1a…

Python单行代码:一招鲜,吃遍天

大家好&#xff0c;在Python编程中&#xff0c;我们时常需要高效、简洁的代码来解决复杂的问题。今天&#xff0c;我将向大家介绍10个非常有用的Python单行代码。 一行代码指的是将复杂的任务浓缩在一行代码中完成。它充分利用Python的简洁和强大&#xff0c;使代码更简洁、更…

智能穿梭,无缝连接:迈威通信助力AGV智慧物流系统高效运转

随着智能制造模式的兴起&#xff0c;在工业4.0和“中国制造2025”的推动下&#xff0c;智能物流迎来了重大的发展机遇。AGV作为智慧仓储物流系统的“关键角色”之一&#xff0c;通过联系、调节离散型物流管理系统&#xff0c;使各环节有效地衔接起来&#xff0c;实现全厂物流运…

git使用摘樱桃的方式,实现特定需求进行提交合并

文章目录 先checkOut到主要的分支(需求提交到这) 然后双击点别的需求分支,对提交内容选定 进行摘樱桃操作 然后双击回到主要分支,会发现那2个提交内容代码已经在主要分支的本地里,选中其 右键选择Squash Commits进行合并 标注自己的需求标题提交名更改后, 最后进行push推送到…

grafana连接influxdb2.x做数据大盘

连接influxdb 展示数据 新建仪表盘 选择存储库 设置展示

【嵌入式】SD NAND:SD卡的集成与优化

嵌入式SD卡&#xff0c;也称为SD NAND或贴片式SD卡&#xff0c;是一种专为空间受限的设备设计的存储解决方案。这种存储卡与传统的SD卡不同&#xff0c;它采用贴片式封装&#xff0c;可以直接焊接到设备的PCB上&#xff0c;从而为电子设备提供内置存储功能。以下是嵌入式SD卡的…

Google 新 AI 为视频生成配乐和对白;Runway 发布 Gen-3 视频生成模型丨 RTE 开发者日报 Vol.226

开发者朋友们大家好&#xff1a; 这里是 「RTE 开发者日报」 &#xff0c;每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE&#xff08;Real-Time Engagement&#xff09; 领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、「…

python+selenium之点击元素报错:‘NoneType‘ object has no attribute ‘click‘

今日遇到一个很奇怪的问题 case1:当使用顺序结构直接从登录到点击页面菜单&#xff0c;则可以正常点击菜单 case2&#xff1a;若把登录分离开&#xff0c;采用封装的方法点击菜单则会提示&#xff1a;‘NoneType’ object has no attribute ‘click’ 具体页面如下&#xff0c…

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 字符串分隔(二)(100分) - 三语言AC题解(Python/Java/Cpp)

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 📎在线评测链接 字符串分隔(二)(100分) 🌍 评测功能需要订阅专栏后私信联系…

玩转nRF52840-DK开发套件 (5) RTT打印调试日志

一、两种日志信息的输出方式 日志信息输出可以方便调试者观察程序运行状态&#xff0c;通常用串口 printf 来输出日志。nRF52840-DK也可以用仿真器 JLink 的 RTT Viewer 输出方式。 二、SDK_config.h配置 勾选相关项&#xff1a; 三、SDK_config.h配置 在主函数 main 中&#x…

一图看懂华为云CodeArts API 7大特性,带你玩转一站式API

华为云CodeArts API是API全生命周期一体化协作平台 &#xff0c;支持开发者高效实现API设计、API开发、API测试、API托管、API运维、API变现的一站式体验。以API契约为锚点&#xff0c;CodeArts API保证了API各阶段数据高度一致&#xff0c;为开发者提供友好易用的API全流程端到…

如何在本地部署ChatTTS? 完美部署 简单几步 cpu gpu cuda

前言 最近,24-05-27号,github上出现了一个新项目,ChatTTS。该项目提供了一个文本转语音(Text To Speech)的开源方案,同时支持中文和英文。在官网的演示视频中,可以看到合成效果高度接近真人。 到目前(06-04)为止,已经有18.3k的star。 那我们就来看看这个模型的基本…

录制视频软件哪个好?录制视频,4款好软件推荐

随着网络技术的飞速发展和社交媒体的普及&#xff0c;录制视频已经成为人们记录生活、分享知识和展示才华的重要方式。在众多录制视频软件中&#xff0c;如何挑选一款功能强大、操作简便的工具&#xff0c;成为了许多用户的难题。本文将为您推荐4款优秀的录制视频软件&#xff…

想体验“时光倒流”吗?文件时光机——可道云teamOS,历史版本管理,随时回溯版本

大家在工作中&#xff0c;遇到过的最奔溃的事情是什么&#xff1f; 是工作没有做好&#xff0c;还是客户要求太离谱&#xff1f; 不知道大家有没有过这样的经历&#xff0c;根据客户要求改方案、改稿子&#xff0c;改了一版又一版&#xff0c;结果客户说还是最初版本更好………