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

news2024/11/23 15:17:00

【小白专用 已验证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.coloradmin.cn/o/1836116.html

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

相关文章

范式(上)-第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、可用关系模式

一、范式的作用 根据关系模式间属性的数据依赖来评价关系模式的好坏 以下我们将基于函数依赖的范围内来讨论范式 二、范式的定义 1、数据依赖满足一定约束的关系模式是范式 2、范式是符合某一级别的关系模式的集合&#xff0c;关系模式R为第几范式可记为 三、第一范式&am…

【Java】已解决com.mysql.cj.jdbc.exceptions.CommunicationsException异常

文章目录 一、分析问题背景二、可能出错的原因三、错误代码示例四、正确代码示例五、注意事项 已解决com.mysql.cj.jdbc.exceptions.CommunicationsException异常 一、分析问题背景 com.mysql.cj.jdbc.exceptions.CommunicationsException是Java程序在使用MySQL Connector/J与…

Docker(三)-Docker常用命令

1.run run命令执行流程:2.帮助启动类命令 2.1 启动docker systemctl start docker2.2 停止docker systemctl stop docker2.3 重启docker systemctl restart docker2.4查看docker状态 systemctl status docker2.5开机启动 systemctl enable docker2.6查看docker概要信息 …

ch552g使用torch-pad测试触摸按键遇到的问题

基本工作原理 通过设置好功能在寄存器和控制寄存器检测引脚输入的值。 实际检测阶段分为3个步骤&#xff1a;第一阶段&#xff1a;选择需要检测的阶段&#xff0c;选择扫描周期1或2ms&#xff0c;开启触摸按键中断&#xff0c;然后在87us内为充电准备阶段&#xff0c;87us内数…

第二十三篇——香农第二定律(二):到底要不要扁平化管理?

目录 一、背景介绍二、思路&方案三、过程1.思维导图2.文章中经典的句子理解3.学习之后对于投资市场的理解4.通过这篇文章结合我知道的东西我能想到什么&#xff1f; 四、总结五、升华 一、背景介绍 对于企业的理解&#xff0c;扁平化的管理&#xff0c;如果从香农第二定律…

ORA-12560: TNS:协议适配器错误

项目场景&#xff1a; 由于最近一直没有连接oracle&#xff0c;然后之前windows也是正常可以启动oracle&#xff0c;正常连接。无论是SQL Developer还是SQL PLUS命令&#xff0c;都能正常连接和操作。 问题描述 这两天刚好用SQL Developer工具连接&#xff0c;然后报错&#…

【Java毕业设计】基于SpringBoot开发的图书馆管理系统

文章目录 摘 要目录1 绪论1.1 课题背景和意义1.2 国内外研究现状1.2.1 国外研究现状1.2.2 国内研究现状 1.3 课题主要内容 2 开发相关技术介绍2.1 系统开发环境2.2 系统开发技术2.2.1 Spring Boot框架2.2.2 MySQL数据库2.2.3 MVC模式 3 系统规划3.1 初步调查分析3.2 可行性分析…

数字孪生流域:定义、组成等

数字孪生流域&#xff1a;定义、组成等 1 数字孪生流域&#xff08;Digital Twin Basin/Watershed&#xff09;总则1.1 定义1.2 适用范围1.3 建设目标1.4 建设原则 2 数字孪生流域框架与组成2.1 数字孪生流域框架2.2 数字孪生流域组成2.2.1 数字孪生平台2.2.2 信息化基础设施 3…

博雅BOYAMIC小魔方测评:外设与内核并重,诠释硬核旗舰体验

撰稿|行星 来源|贝多财经 视频流量时代的到来&#xff0c;使得用户生成内容端对于视频质量的要求拾级而上。 图像、画面构成情节发展&#xff0c;影响视频内容的表达&#xff0c;而观众对内容的直接感知&#xff0c;则直接取决于视频声音呈现的品质。正因如此&#xff0c;视…

4418 android4.4 + 6818 android5.1 移植gps

网上已经有的移植的资料 目前 3399 的板子上 对已有的可运行的GPS 进行测试。 我这里的 rk3399 的板卡 , Android7 Android8 都是 可以运行 GPS 应用程序的。 使用的是 ttyS4 的节点。 问题: 我发现, 开机就删掉 ttyS4 节点,也是可以 打开应用的。并且可以正常运行。不…

CUDA C权威编程指南 第4章 全局内存

一、CUDA内存模型概述 1. CUDA内存模型 对于程序员来说&#xff0c;一般有两种类型的存储器&#xff1a; 可编程的&#xff1a;你需要显式地控制哪些数据存放在可编程内存中 不可编程的&#xff1a;你不能决定数据的存放位置&#xff0c;程序将自动生成存放位置以获得良好…

Centos8.5安装mysql8.0

1.检查是否有安装mysql数据库&#xff08;如果有mysql或者mariadb数据库&#xff0c;则卸载&#xff09; [rootmyhost ~]# rpm -qa |grep mysql [rootmyhost ~]# rpm -qa | grep mariadb [rootmyhost ~]# ll /etc/my.cnf ls: 无法访问/etc/my.cnf: No such file or directory…

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

&#x1f36d; 大家好这里是清隆学长 &#xff0c;一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 &#x1f4bb; ACM银牌&#x1f948;| 多次AK大厂笔试 &#xff5c; 编程一对一辅导 &#x1f44f; 感谢大家的订阅➕ 和 喜欢&#x1f497; &#x1f…

敬酒词大全绝对实用 万能敬酒词

举杯共饮&#xff0c;友情初识&#xff1b;再续一杯&#xff0c;情深似海&#xff0c;朋友相伴人生路更宽。酒逢知己千杯少&#xff0c;一饮而尽显真意&#xff0c;浅尝则留情&#xff0c;深情则尽欢。友情到深处&#xff0c;千杯不倒&#xff0c;若情浅则饮少&#xff0c;醉卧…

正则表达式常用表示

视频教程&#xff1a;10分钟快速掌握正则表达式 正则表达式在线测试工具&#xff08;亲测好用&#xff09;&#xff1a;测试工具 正则表达式常用表示 限定符 a*&#xff1a;a出现0次或多次a&#xff1a;a出现1次或多次a?&#xff1a;a出现0次或1次a{6}&#xff1a;a出现6次a…

第二十二篇——香农第二定律(一):为什么你的网页总是打不开?

目录 一、背景介绍二、思路&方案三、过程1.思维导图2.文章中经典的句子理解3.学习之后对于投资市场的理解4.通过这篇文章结合我知道的东西我能想到什么&#xff1f; 四、总结五、升华 一、背景介绍 看似在将知识&#xff0c;实际是在讲生活和所有&#xff1b;突破边界偶尔…

澳汰尔(Altair)3D 打印部件设计仿真——打造高效的增材制造设计

借助 Inspire Print3D&#xff0c;可加速创新、结构高效的 3D 打印部件的创建、优化和研究&#xff0c;提供快速准确的工具集&#xff0c;可用于实现选择性激光熔融 (SLM) 部件的设计和过程仿真。 工程师可以快速了解影响可制造性的工艺或设计变更&#xff0c;然后将部件和支撑…

Java网络爬虫入门

文章目录 1、导入依赖2、CrawlerFirst 1、导入依赖 <dependencies><!-- HttpClient --><dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.5.3</version></…

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 智能成绩表(100分) - 三语言AC题解(Python/Java/Cpp)

&#x1f36d; 大家好这里是清隆学长 &#xff0c;一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 &#x1f4bb; ACM银牌&#x1f948;| 多次AK大厂笔试 &#xff5c; 编程一对一辅导 &#x1f44f; 感谢大家的订阅➕ 和 喜欢&#x1f497; &#x1f…

高等数学笔记(二):极限

一、数列极限的定义 以下符号表示 “对于任意给定的” 以下符号表示 “存在” 以下符号表示 “如果什么&#xff08;箭头左&#xff09;&#xff0c;则什么&#xff08;箭头右&#xff09;” 二、收敛数列的性质 2.1 唯一性 2.2 有界性 2.3 保号性 2.4 子数列收敛性 三、函数…