当前位置: 首页 > news >正文

WPF 手撸插件 八 操作数据库一

1、本文将使用SqlSugar创建Sqlite数据库,进行入门的增删改查等操作。擦,咋写着写着凌乱起来了。

SqlSugar官方文档:简单示例,1分钟入门 - SqlSugar 5x - .NET果糖网

2、环境SqlSugar V5.0版本需要.Net Framework 4.6 ,NuGet添加内容如下,安装红框中的内容就可以了。这里的数据库demo.db是自动创建的。

3、运行效果如下图 。

4、整体代码如下。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using SqlSugar;namespace ConsoleAppSqlSugar
{class Program{static void Main(string[] args){Console.WriteLine("启动");// 创建数据库对象SqlSugarClient Db = new SqlSugarClient(new ConnectionConfig(){ConnectionString = "datasource=demo.db",DbType = DbType.Sqlite,IsAutoCloseConnection = true}, db =>{db.Aop.OnLogExecuting = (sql, pars) =>{//获取原生SQL推荐 5.1.4.63 性能OKConsole.WriteLine(UtilMethods.GetNativeSql(sql,pars));//获取无参数化 SQL 对性能有影响,特别大的SQL参数多的,调试使用//Console.WriteLine(UtilMethods.GetSqlString(DbType.Sqlite,sql,pars));};//注意多租户 有几个设置几个//db.GetConnection(5).Aop;});bool isExit = true;while (isExit){Console.WriteLine("请输入:");Console.WriteLine("1、创建数据库。");Console.WriteLine("2、创建数据表。");Console.WriteLine("3、查询表的所有。");Console.WriteLine("4、插入数据。");Console.WriteLine("5、更新数据。");Console.WriteLine("6、删除数据。");Console.WriteLine("7、退出");int result;if (int.TryParse(Console.ReadLine(),out result)){switch (result){case 1:Db.DbMaintenance.CreateDatabase();//达梦和Oracle不支持建库break;case 2:Db.CodeFirst.InitTables<ToDos>();//所有库都支持break;case 3://查询表的所有var list = Db.Queryable<ToDos>().ToList();foreach (ToDos item in list){Console.WriteLine("ToDoName:"+item.ToDoName+"  "+ "ToDoDescription:" + item.ToDoDescription);}break;case 4://插入int num1=Db.Insertable(new ToDos() { ToDoName = "任务名称", ToDoDescription = "任务描述" }).ExecuteCommand();if (num1>0){Console.WriteLine("插入数据成功");}break;case 5://更新int num2 = Db.Updateable(new ToDos() { Id = 1, ToDoName = "任务名称更新", ToDoDescription = "任务描述更新" }).ExecuteCommand();if (num2 > 0){Console.WriteLine("更新数据成功");}break;case 6://删除int num3 = Db.Deleteable<ToDos>().Where(it => it.Id == 1).ExecuteCommand();if (num3 > 0){Console.WriteLine("删除数据成功");}break;case 7:isExit = false;break;default:isExit = false;break;}}}Console.WriteLine("输入回车退出程序。");Console.ReadLine();}}
}

5、简单的仓储,其实官网也有很合的仓储示例。仓储简单类代码如下。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using SqlSugar;namespace ConsoleAppSqlSugar
{//定义一个泛型仓储类,继承自SimpleClient<T>,T是一个类的泛型参数public class SqlSugarRepository<T>:SimpleClient<T> where T:class,new(){//构造函数public SqlSugarRepository(){//创建SqlSugarClient实例,用于数据库操作。var db = new SqlSugarClient(new ConnectionConfig(){ConnectionString = "datasource=demo.db",DbType = DbType.Sqlite,IsAutoCloseConnection = true});//将创建的SqlSugarClient实例复制给继承自SimlpeClient<T>的Context属性base.Context = db;//配置AOP拦截器,在SQL语句执行前输出SQL语句控制器db.Aop.OnLogExecuting = (sql, pars) =>{Console.WriteLine(sql); //控制台输出执行的SQL语句};}}
}

调用代码如下。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using SqlSugar;namespace ConsoleAppSqlSugar
{class Program{static void Main(string[] args){Console.WriteLine("启动");// 创建数据库对象//SqlSugarClient Db = new SqlSugarClient(new ConnectionConfig()//{//    ConnectionString = "datasource=demo.db",//    DbType = DbType.Sqlite,//    IsAutoCloseConnection = true//}, db =>//{//    db.Aop.OnLogExecuting = (sql, pars) =>//    {//        //获取原生SQL推荐 5.1.4.63 性能OK//        Console.WriteLine(UtilMethods.GetNativeSql(sql,pars));//        //获取无参数化 SQL 对性能有影响,特别大的SQL参数多的,调试使用//        //Console.WriteLine(UtilMethods.GetSqlString(DbType.Sqlite,sql,pars));//    };//    //注意多租户 有几个设置几个//    //db.GetConnection(5).Aop;//});//创建ToDos类型的仓储实例。var toDosRepository = new SqlSugarRepository<ToDos>();bool isExit = true;while (isExit){Console.WriteLine("请输入:");Console.WriteLine("1、创建数据库。");Console.WriteLine("2、创建数据表。");Console.WriteLine("3、查询表的所有。");Console.WriteLine("4、插入数据。");Console.WriteLine("5、更新数据。");Console.WriteLine("6、删除数据。");Console.WriteLine("7、退出");int result;if (int.TryParse(Console.ReadLine(),out result)){switch (result){case 1://Db.DbMaintenance.CreateDatabase();//达梦和Oracle不支持建库toDosRepository.Context.DbMaintenance.CreateDatabase();break;case 2://Db.CodeFirst.InitTables<ToDos>();//所有库都支持toDosRepository.Context.CodeFirst.InitTables<ToDos>();//所有库都支持break;case 3://查询表的所有//var list = Db.Queryable<ToDos>().ToList();var list = toDosRepository.Context.Queryable<ToDos>().ToList();foreach (ToDos item in list){Console.WriteLine("ToDoName:"+item.ToDoName+"  "+ "ToDoDescription:" + item.ToDoDescription);}break;case 4://插入//int num1=Db.Insertable(new ToDos() { ToDoName = "任务名称", ToDoDescription = "任务描述" }).ExecuteCommand();int num1 = toDosRepository.Context.Insertable(new ToDos() { ToDoName = "任务名称", ToDoDescription = "任务描述" }).ExecuteCommand();if (num1>0){Console.WriteLine("插入数据成功");}break;case 5://更新//int num2 = Db.Updateable(new ToDos() { Id = 1, ToDoName = "任务名称更新", ToDoDescription = "任务描述更新" }).ExecuteCommand();int num2 = toDosRepository.Context.Updateable(new ToDos() { Id = 1, ToDoName = "任务名称更新", ToDoDescription = "任务描述更新" }).ExecuteCommand();if (num2 > 0){Console.WriteLine("更新数据成功");}break;case 6://删除//int num3 = Db.Deleteable<ToDos>().Where(it => it.Id == 1).ExecuteCommand();int num3 = toDosRepository.Context.Deleteable<ToDos>().Where(it => it.Id == 1).ExecuteCommand();if (num3 > 0){Console.WriteLine("删除数据成功");}break;case 7:isExit = false;break;default:isExit = false;break;}}}Console.WriteLine("输入回车退出程序。");Console.ReadLine();}}
}

相关文章:

WPF 手撸插件 八 操作数据库一

1、本文将使用SqlSugar创建Sqlite数据库&#xff0c;进行入门的增删改查等操作。擦&#xff0c;咋写着写着凌乱起来了。 SqlSugar官方文档&#xff1a;简单示例&#xff0c;1分钟入门 - SqlSugar 5x - .NET果糖网 2、环境SqlSugar V5.0版本需要.Net Framework 4.6 &#xff0…...

代数结构基础 - 离散数学系列(八)

目录 1. 群&#xff08;Group&#xff09; 群的定义 群的示例 2. 环&#xff08;Ring&#xff09; 环的定义 环的示例 3. 域&#xff08;Field&#xff09; 域的定义 域的示例 域在密码学中的应用 4. 实际应用场景 1. 对称性与加密 2. 误差检测与纠正 3. 数据编码…...

函数的arguments为什么不是数组?如何转化为数组?

因为arguments本身并不能调用数组方法&#xff0c;它是一个另外一种对象类型&#xff0c;只不过属性从0开始排&#xff0c;依次为0 1 2…最后还有callee和length属性&#xff0c;我们也把这样的对象成为类数组。 常见的类数组还有&#xff1a; 1.用getElementsByTagName/Class…...

Java之反射

目录 反射 定义 主要用途 反射相关的类 Class类中【获得类相关方法】 Class类中【获得类中属性相关的方法】 Class类中【获得类中注解相关的方法】 Class类中【获得类中构造器相关的方法】 Class类中【获得类中方法相关的方法】 获得Class对象 代码示例1 代码示例…...

3dsMax添加天空盒

点击渲染&#xff0c;环境 &#xff0c; 点击位图 找到要设置的天空HDR&#xff0c;可以使用HDR(EXR)贴图 一个可以下载HDR贴图的网站 https://polyhaven.com/hdris在渲染的时候不要使用使用微软输入法&#xff0c;3dsmax会卡死&#xff0c; 在渲染的时候不要使用使用微软…...

C语言的类型提升机制

概念 在C语言中&#xff0c;整数类型按照其大小可以分为以下几类&#xff08;从小到大&#xff09;&#xff1a; charshortintlonglong long 当在表达式中涉及这些类型的混合运算时&#xff0c;较小的类型会被提升为较大的类型。具体规则如下&#xff1a; ①char 和 short …...

Pandas和Seaborn数据可视化

Pandas数据可视化 学习目标 本章内容不需要理解和记忆&#xff0c;重在【查表】&#xff01; 知道数据可视化的重要性和必要性知道如何使用Matplotlib的常用图表API能够找到Seaborn的绘图API 1 Pandas数据可视化 一图胜千言&#xff0c;人是一个视觉敏感的动物&#xff0c;大…...

爬虫(Python版本)

1.爬虫的法律问题 爬虫技术&#xff08;Web Scraping&#xff09;指通过程序自动访问网页并提取其中的数据。在使用爬虫的过程中&#xff0c;涉及到一些法律法规和合规性问题。 常见法律风险 ①未经授权的访问&#xff1a;很多网站对爬虫行为设置了限制。如果未获得授权就进行…...

【分布式训练 debug】VS Code Debug 技巧:launch.json实用参数

VS Code Debug技巧&#xff1a;launch.json实用参数 在使用Visual Studio Code (VS Code)进行调试时&#xff0c;launch.json文件是一个强大的工具&#xff0c;它允许你自定义调试会话。以下是一些实用的参数&#xff0c;可以帮助你更有效地调试Python代码。 1. 调试第三方库…...

pycharm连接linux服务器需要提前安装ssh服务

在 Debian 或 Ubuntu 系统上&#xff0c;使用 APT&#xff1a; bash复制代码 sudo apt-get install openssh-server 在基于 RPM 的系统如 CentOS 或 RHEL 上&#xff0c;使用 YUM 或 DNF&#xff1a; bash复制代码 sudo yum install openssh-server 或对于较新的 RHEL/Cent…...

通信工程学习:什么是LAN局域网、MAN城域网、WAN广域网

LAN局域网、MAN城域网、WAN广域网 LAN&#xff08;Local Area Network&#xff0c;局域网&#xff09;、MAN&#xff08;Metropolitan Area Network&#xff0c;城域网&#xff09;和WAN&#xff08;Wide Area Network&#xff0c;广域网&#xff09;是计算机网络中根据覆盖范围…...

LeetCode热题100速通

一丶哈希 1、两数之和&#xff08;简单&#xff09; 给定一个整数数组 n u m s nums nums 和一个整数目标值 t a r g e t target target&#xff0c;请你在该数组中找出 和为目标值 t a r g e t target target 的那 两个 整数&#xff0c;并返回它们的数组下标。 你可以假设…...

Python代码编写KDJ指标

KDJ指标由三部分组成&#xff1a;K值、D值、J值&#xff0c;主要用于分析股票市场的超买超卖状态及股价波动的趋势。博主记录学习编写KDJ指标线 import numpy as npdef calculate_kdj(close_prices, n9, m13, m23):"""计算KDJ指标:param close_prices: 收盘价序…...

传统少数民族物品检测系统源码分享

传统少数民族物品检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer…...

深度学习中的迁移学习:预训练模型微调与实践

深度学习中的迁移学习&#xff1a;预训练模型微调与实践 目录 &#x1f4a1; 迁移学习的核心概念&#x1f9e0; 预训练模型的使用&#xff1a;ResNet与VGG的微调&#x1f3e5; 迁移学习在医学图像分析中的应用&#x1f504; 实践中的迁移学习微调过程 1. &#x1f4a1; 迁移学…...

原生input实现时间选择器用法

2024.10.08今天我学习了如何用原生的input&#xff0c;实现时间选择器用法&#xff0c;效果如下&#xff1a; 代码如下&#xff1a; <div><input id"yf_start" type"text"> </div><script>$(#yf_start).datepicker({language: zh…...

对象的概念

对象是编程中一个重要的概念&#xff0c;尤其在面向对象编程&#xff08;OOP&#xff09;中更为核心。简单来说&#xff0c;对象是一种数据结构&#xff0c;它可以存储相关的数据和功能。以下是关于对象的详细描述&#xff1a; 1. 对象的定义 对象是属性&#xff08;数据&…...

ARIMA|基于自回归差分移动平均模型时间序列预测

目录 一、基本内容介绍&#xff1a; 二、实际运行效果&#xff1a; 三、原理介绍&#xff1a; 四、完整程序下载&#xff1a; 一、基本内容介绍&#xff1a; 本代码基于Matlab平台&#xff0c;通过ARIMA模型对时间序列数据进行预测。程序以通过调试&#xff0c;解压后打开…...

sqli-labs靶场第三关less-3

sqli-labs靶场第三关less-3 1、确定注入点 http://192.168.128.3/sq/Less-3/?id1 http://192.168.128.3/sq/Less-3/?id2 有不同回显&#xff0c;判断可能存在注入&#xff0c; 2、判断注入类型 输入 http://192.168.128.3/sq/Less-3/?id1 and 11 http://192.168.128.3/sq/L…...

泡沫背后:人工智能的虚幻与现实

人工智能的盛世与泡沫 现今&#xff0c;人工智能热潮席卷科技行业&#xff0c;投资者、创业者和用户都被其光环吸引。然而&#xff0c;深入探讨这种现象&#xff0c;人工智能的泡沫正在形成&#xff0c;乃至具备崩溃的潜质。我们看到的&#xff0c;无非是一场由资本推动的狂欢…...

HTML 语义化

目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案&#xff1a; 语义化标签&#xff1a; <header>&#xff1a;页头<nav>&#xff1a;导航<main>&#xff1a;主要内容<article>&#x…...

C++实现分布式网络通信框架RPC(3)--rpc调用端

目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中&#xff0c;我们已经大致实现了rpc服务端的各项功能代…...

C++:std::is_convertible

C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...

质量体系的重要

质量体系是为确保产品、服务或过程质量满足规定要求&#xff0c;由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面&#xff1a; &#x1f3db;️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限&#xff0c;形成层级清晰的管理网络&#xf…...

Device Mapper 机制

Device Mapper 机制详解 Device Mapper&#xff08;简称 DM&#xff09;是 Linux 内核中的一套通用块设备映射框架&#xff0c;为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程&#xff0c;并配以详细的…...

Python+ZeroMQ实战:智能车辆状态监控与模拟模式自动切换

目录 关键点 技术实现1 技术实现2 摘要&#xff1a; 本文将介绍如何利用Python和ZeroMQ消息队列构建一个智能车辆状态监控系统。系统能够根据时间策略自动切换驾驶模式&#xff08;自动驾驶、人工驾驶、远程驾驶、主动安全&#xff09;&#xff0c;并通过实时消息推送更新车…...

Bean 作用域有哪些?如何答出技术深度?

导语&#xff1a; Spring 面试绕不开 Bean 的作用域问题&#xff0c;这是面试官考察候选人对 Spring 框架理解深度的常见方式。本文将围绕“Spring 中的 Bean 作用域”展开&#xff0c;结合典型面试题及实战场景&#xff0c;帮你厘清重点&#xff0c;打破模板式回答&#xff0c…...

在 Spring Boot 项目里,MYSQL中json类型字段使用

前言&#xff1a; 因为程序特殊需求导致&#xff0c;需要mysql数据库存储json类型数据&#xff0c;因此记录一下使用流程 1.java实体中新增字段 private List<User> users 2.增加mybatis-plus注解 TableField(typeHandler FastjsonTypeHandler.class) private Lis…...

Elastic 获得 AWS 教育 ISV 合作伙伴资质,进一步增强教育解决方案产品组合

作者&#xff1a;来自 Elastic Udayasimha Theepireddy (Uday), Brian Bergholm, Marianna Jonsdottir 通过搜索 AI 和云创新推动教育领域的数字化转型。 我们非常高兴地宣布&#xff0c;Elastic 已获得 AWS 教育 ISV 合作伙伴资质。这一重要认证表明&#xff0c;Elastic 作为 …...

算法打卡第18天

从中序与后序遍历序列构造二叉树 (力扣106题) 给定两个整数数组 inorder 和 postorder &#xff0c;其中 inorder 是二叉树的中序遍历&#xff0c; postorder 是同一棵树的后序遍历&#xff0c;请你构造并返回这颗 二叉树 。 示例 1: 输入&#xff1a;inorder [9,3,15,20,7…...