dotNet 之数据库sqlite

news2024/12/25 0:09:28

Sqlite3是个特别好的本地数据库,体积小,无需安装,是写小控制台程序最佳数据库。NET Core是同样也是.NET 未来的方向。

**硬件支持型号  点击 查看 硬件支持 详情**

DTU701 产品详情

DTU702 产品详情

DTU801 产品详情

DTU802 产品详情

DTU902 产品详情

G5501 产品详情

ARM dotnet 编程

 

创建C#控制台应用(具有.NET6),项目命令sqlite。

Nuget安装

  • Microsoft.EntityFrameworkCore.Sqlite

  • Microsoft.EntityFrameworkCore.Sqlite.Core

  • Newtonsoft.Json

EF:ORM操作框架,但不包括数据库基本操作(我感觉默认自带sql server数据库操作) Sqlite:Sqlite数据库操作,EF接管

ORM解释 ORM,又称对象关系数据库。 在ORM里面认为,我们操作的对象属性和数据库里面的列的定义是对应的。 比如一个Student类,有id,name,age,sex等属性,那么我们C#程序中的类也有id,name,age,sex等属性。 而且我的类名和你的表名完全一致,我的数据类型和你的数据库也有对应关系 例如C#的string在数据库里面有varchar(50),varchar(max),nchar(10)等

sqlite上 添加->新建文件夹DB

DB 添加->类 ORMContext

ORMContext是数据库的上下文。

ORMContext.cc 中的内容如下:

namespace sqlite.DB
{
    //继承DbContext,让EF接管  ,ORMContext数据库上下文
    public class ORMContext : DbContext
    {
        public DbSet<Student> Students { get; set; }

        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            //base.OnConfiguring(optionsBuilder);
            //数据库连接字符串
            optionsBuilder.UseSqlite("Data Source=blogging.db");
        }

    }

    public class Student
    {
        //主键
        [Key]
        // 自动递增
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)] 
        public int Id { get; set; }
        public string Name { get; set; }

        public int Age { get; set; }
        public string Sex { get; set; }

    }
}

Program.cs中 我们 对数据库 进行创建、保存、查、排序、增、删、改等操作,程序如下:

ORMContext _ORMContext = new ORMContext();
//如果没有数据库,则自动创建
_ORMContext.Database.EnsureCreated();
var i = 0;
for (i = 0; i < 10; i++)
{
    _ORMContext.Students.Add(new Student()
    {
        Name = "小李" + i,
        Age = i,
        Sex = "女"
    });
}
//保存数据库更新
_ORMContext.SaveChanges();
​
//系列化打印数据
//var res = _ORMContext.Students.Where(t => t.Sex == "女").ToList();
//Console.WriteLine(JsonConvert.SerializeObject(res));
​
Console.WriteLine("所有:");
var res = _ORMContext.Students.Where(t => true).ToList();
res.ForEach(t => {
    Console.WriteLine("Name:"+t.Name+" Age:"+t.Age+" Sex:"+t.Sex);
​
});
Console.WriteLine();
​
/*查*/
​
Console.WriteLine("查List:");
//var ListRes = _ORMContext.数据表.Where(t => 判断条件).ToList();
var ListRes = _ORMContext.Students.Where(t => t.Name == "小李1").ToList();
Console.WriteLine(JsonConvert.SerializeObject(ListRes));
​
Console.WriteLine("查第一个,如果没有则返回null:");
var res1 = _ORMContext.Students.Where(t => t.Name == "小李1").FirstOrDefault();
Console.WriteLine(JsonConvert.SerializeObject(res1));
//排序
//OrderBy: 升序
//OrderByDescending:降序
Console.WriteLine("排序:");
var res2 = _ORMContext.Students.Where(t=>t.Name == "小李1").OrderByDescending(t => t.Id).ToList();
Console.WriteLine(JsonConvert.SerializeObject(res2));
​
/*增,删,改
 
由于ORM是对象数据模型,所以所有的数据操作都是对一个完整的对象进行操作。
EF具有缓存追踪的设置,如果你查询出来的数据进行了修改,然后保存缓存的话,就会同步更新。
​
 */
// 增
_ORMContext.Students.Add(new Student
{
    Name = "小李",
    Age = i,
    Sex = "男"
});
_ORMContext.SaveChanges();//保存缓存操作
​
// 改
var res3 = _ORMContext.Students.Where(t => t.Age == 0).ToList();
//将所有年龄为0的人的名字改成"修改名称"
res3.ForEach(item => {
    item.Name = "修改名称";
});
​
_ORMContext.SaveChanges();//保存缓存操作
​
// 删
//删除所有年龄小于5岁的人
Console.WriteLine("删除所有年龄小于5岁的人");
var res4 = _ORMContext.Students.Where(t => true).ToList();
​
res4.ForEach(t => {
    if (t.Age < 5)
    {
        _ORMContext.Students.Remove(t);
    }
});
​
_ORMContext.SaveChanges();//保存缓存操作
​
​
Console.WriteLine("剩余的名字:");
var res5 = _ORMContext.Students.Where(t => true).ToList();
res5.ForEach(t => {
    Console.WriteLine(t.Name);
    
});
​
//sql语句执行
//sql查询
//实体查询
//var res5 = _ORMContext.Database.SqlQuery<Student>("Select * from Students").ToList();
​
///sql执行/增删改
//_ORMContext.Database.ExecuteSqlCommand("update Students set sex = '女' where age = 6");
​
Console.WriteLine("Hello, World!");
Console.ReadLine();

执行结果如下:

 

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

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

相关文章

iview 日期 datetimerange

问题&#xff1a;每次点击编辑按钮进入到编辑页面&#xff0c;活动时间明明有值&#xff0c;却还是提示请选择活动时间。 原因&#xff1a;值没绑定上 解决办法&#xff1a;v-model 修改为 :value <Form-item label"活动时间" prop"timeRange"><d…

谷粒商城第九天-对商品服务中所涉及到的表的思考

目录 一、总述 二、spu、sku、规格参数、销售属性之间的关系理解 三、相关表设计 1. 属性表 2. 基本属性分组表 3. 分组-基本属性关系表 ​4. spu基本属性值表 5. spu详情信息表 6. spu评论表 7. 商品sku值表 8. sku详情表 9. sku图片表 10. 分类表 11. 品牌表 …

什么是代码合并。PR、MR通识说明

What is it ? 首先我想先来讲讲什么是分支合并请求Merge Request(也可叫Pull Request&#xff0c;下文中全用Merge Request或其缩写MR指代)&#xff0c;以及它有什么作用&#xff08;如果你对此概念有所了解&#xff0c;你完全可以跳过What is it&#xff09;。 MR(或者PR)就…

海外应用商店优化实用指南之元数据的迭代更新

随着每天都有新应用程序加入App Store和Google Play商店&#xff0c;许多应用程序都会针对与我们相同的关键词&#xff0c;虽然我们的元数据保持不变&#xff0c;但竞争对手的应用会重新编入索引&#xff0c;最终导致我们的关键词排名随着时间的推移稳步下降。 1、迭代的重要性…

Mysql in 查询的奇怪方向

Mysql in 查询的奇怪方向 关于表字段存储的数据为 num1,num2,num3时, 还要通过多个num1,num2入参针对该字段进行查询 建表语句 CREATE TABLE test (test_ids varchar(100) DEFAULT NULL COMMENT 保存ids 以逗号分隔 ) ENGINEInnoDB;数据项 查询语句 SELECT test_ids FROM t…

OSPF工作原理及其配置命令

目录 一、OSPF&#xff08;开放式最短路径优先协议&#xff09;&#xff1a; 作用&#xff1a;防环 弊端&#xff1a; 结构化部署: 更新方式&#xff1a; 二、OSPF的数据包 三、OSPF的状态机 Down Init 2way 条件&#xff1a; Exstart Exchange Loadi…

Stephen Wolfram:让 ChatGPT 真正起作用的是什么?

What Really Lets ChatGPT Work? 让 ChatGPT 真正起作用的是什么&#xff1f; Human language—and the processes of thinking involved in generating it—have always seemed to represent a kind of pinnacle of complexity. And indeed it’s seemed somewhat remarkabl…

stm32项目(9)——基于stm32的智能门窗设计

目录 一.功能设计 二.硬件方案 1.单片机 2.显示器 3.温湿度模块 4.烟雾模块 5.光照模块 6.数字舵机 7.蓝牙模块 8. 语音识别模块 三.程序设计 四.课题意义 五.国内外发展现状 一.功能设计 本次设计的功能如下&#xff1a; 系统包括了语音模块 、传感器数据采集模块和…

冠达管理:炒股知识入门?

股市出资是指将资金投入到股票商场&#xff0c;在商场改变中获取收益的出资行为。股票商场波动性大&#xff0c;收益高&#xff0c;招引了大量出资者的眼球&#xff0c;但是也需要出资者具备一定的常识和技能。下面从多个角度剖析&#xff0c;帮助初学者了解股市出资。 一、基本…

恒运资本:股票印花税下降有什么影响?什么原因导致下降?

在进行股票教育过程中是需求收取必定的手续费的&#xff0c;比如说买卖佣钱、印花税、过户费等等。那么股票印花税下降有什么影响&#xff1f;什么原因导致下降&#xff1f;下面就由恒运资本为大家剖析&#xff1a; 股票印花税下降有什么影响&#xff1f; 1、对于企业&#xf…

Effective Java笔记(32)谨慎并用泛型和可变参数

故事的小黄花 从出生那年就飘着 童年的荡秋千 随记忆一直晃到现在 可变参数&#xff08; vararg &#xff09; 方法&#xff08;详见第 53 条&#xff09;和泛型都是在 Java 5 中就有了&#xff0c;因此你可能会期待它们可以良好地相互作用&#xff1b;遗憾的是&#xff0c;它们…

python科研应用知乎,python库如何安装

大家好&#xff0c;小编来为大家解答以下问题&#xff0c;python科研应用知乎&#xff0c;python scipy库安装&#xff0c;现在让我们一起来看看吧&#xff01; 首先cmd进入python-s目录&#xff0c;然后再输入代码 1. 安装numpy 在线安装。此方法参考网页&#xff1a; https:/…

LeaferUI - 性能强悍、简洁轻量的 HTML5 Canvas 2D 图形 UI 绘图框架,用于 web 端在线图形设计、图表、白板、数据可视化等场景

最近想做一个轻巧的在线画册和海报设计工具&#xff0c;最近发布的 LeaferUI 特别适合这样的场景。 LeaferUI 是什么&#xff1f; Leafer UI 是基于 LeaferJS 开发的一套绚丽多彩的 UI 绘图框架&#xff0c;帮助开发者快速生成图形界面。LeaferJS 是一个基于 HTML5 Canvas 开…

3个优秀的PPT模板网站,让你的演示报告更出色!

PPT&#xff0c;作为我们在日常学习和工作中常用的一种呈现工具&#xff0c;其作用和影响力不言而喻。一份精心制作的PPT不仅可以增强观众的理解和记忆&#xff0c;而且还能展示演讲者的专业性和深度。然而&#xff0c;从零开始制作PPT可能需要花费大量的时间和精力&#xff0c…

6款好用的思维导图在线制作网站盘点,拒绝低效、探索创意!

思维导图以其直观、系统的特性&#xff0c;成为了我们理清思路、整理信息的强大助手。利用好思维导图&#xff0c;我们可以更好地理解信息、链接概念&#xff0c;进一步提高我们的学习和工作效率。 在众多制作思维导图的软件中&#xff0c;在线思维导图制作网站更是因其…

opencv基础53-图像轮廓06-判断像素点与轮廓的关系(轮廓内,轮廓上,轮廓外)cv2.pointPolygonTest()

点到轮廓的距离 在 OpenCV 中&#xff0c;函数 cv2.pointPolygonTest()被用来计算点到多边形&#xff08;轮廓&#xff09;的最短距离&#xff08;也 就是垂线距离&#xff09;&#xff0c;这个计算过程又称点和多边形的关系测试。该函数的语法格式为&#xff1a; retval cv2…

(6)(6.3) 复合连接的故障处理

文章目录 6.3 复合连接的故障处理 6.4 相关话题 6.3 复合连接的故障处理 带有 F7 或 H7 处理器并有 CAN 接口的自动驾驶仪使用的固件提供两个 USB 接口。一个用于正常的 MAVLink 连接&#xff0c;一个用于 SLCAN 串行连接到 CAN 接口进行配置和固件更新。这被称为复合型 USB…

自定义 视频/音频 进度条

复制代码根据自己需求改动就可以了 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta http-equiv"X-UA-Compatible" content"IEedge" /><metaname"viewport"conten…

关于APP备案、小程序备案的问题,如何备案?

近日&#xff0c;工信部发布了关于开展移动互联网应用程序备案工作的通知。为落实相关法律法规要求&#xff0c;促进互联网行业规范健康发展&#xff0c;进一步做好移动互联网信息服务管理&#xff0c;现组织开展移动互联网应用程序&#xff08;以下简称 APP&#xff09;备案工…

2023牛客暑期多校训练营7

M.Wring Books 问从1到n所有数的数位加起来一共是多少 假设n为1025 我们分别从个位,十位,百位,...考虑 对于个位,1到1025每个数都有个位,所以加1025 对于十位,1到1025中1到9没有十位,所以加1025-9 对于百位,1到1025中1到99没有百位,所以加1025-99 对于千位,1到1025中1到…