.NET操作 Access (MSAccess)

注意:新项目推荐 Sqlite ,Access需要注意的东西太多了,比如OFFICE版本,是X86还是X64

连接字符串

cs 复制代码
Provider=Microsoft.ACE.OleDB.15.0;Data Source="+GetCurrentProjectPath+"\\test.accdb

//不同的office版本 连接字符串有差异

源码下载

下载: GitHub - DotNetNext/SqlSugar: .Net aot ORM Fastest ORM Simple Easy Sqlite orm Oracle ORM Mysql Orm postgresql ORm SqlServer oRm 达梦 ORM 人大金仓 ORM 神通ORM C# ORM , C# ORM .NET ORM NET5 ORM .NET6 ORM ClickHouse orm QuestDb ,TDengine ORM,OceanBase orm,GaussDB orm ,Tidb orm Object/Relational Mapping

注意:.NET CORE下要发布到X86文件夹下

NUGET安装

|--------------------------|-------------------------------------|
| .NET Framework | .NET CORE & .NET 5 & .NET 6 ....+ |
| SqlSugar SqlSugar.Access | SqlSugarCore SqlSugar.AccessCore |

代码

cs 复制代码
DbType=DbType.Access 

//不要使用Any Cpu Office安装的是X86就用X86 和office版本一样

注意:.NET CORE下要发布到X86文件夹下

cs 复制代码
//程序启动时加入
InstanceFactory.CustomAssemblies =
new System.Reflection.Assembly[] { typeof(AccessProvider).Assembly };

//创建db对象
var db=new SqlSugarClient(new ConnectionConfig()
            {
                DbType = SqlSugar.DbType.Access, 
                ConnectionString = Config.ConnectionString,
                IsAutoCloseConnection = true 
            });

//查询表的所有
var list = Db.Queryable<Student>().ToList();
 
//插入
Db.Insertable(new Student() { SchoolId = 1, Name = "jack" }).ExecuteCommand();
 
//更新
Db.Updateable(new Student() { Id = 1, SchoolId = 2, Name = "jack2" }).ExecuteCommand();
 
//删除
Db.Deleteable<Student>().Where(it => it.Id == 1).ExecuteCommand();

Access分页

Access在联表分页 如果存在OrderBy是不支持的

3种解决方案:

1、使用内存分页 .ToList().Skip(1).Take()

2、去掉OrderBy

3、使用子查询 (最新版版本才支持)

三表以上的JOIN操作

默认Access只支持2个表的联表查询,我们可以通过嵌套查询实现3表查询

cs 复制代码
 var getAll = db.Queryable<Order>()

                .LeftJoin<Order>((x, y) => x.Id == y.Id)

                //可以这儿加Select

                .MergeTable()//通过mergetable合并成一个表在进行JOIN

                .LeftJoin<Order>((x, y) => x.Id == y.Id)

                .ToList();
相关推荐
波力海苔夹心脆67516 小时前
C# 视觉检测实战:PLC 按钮触发 VisionPro 检测,OK 亮灯 / NG 灭灯(西门子 PLC,含界面显示与图片存档)
开发语言·经验分享·c#·自动化·视觉检测·.net
hez201017 小时前
一行代码在 .NET 项目里启用 Satori GC
c#·.net·.net core·gc·clr
QUDONG_biubiubiu21 小时前
.NET Runtime 6.0/7.0/8.0/9.0下载修复教程,软件打不开这样解决
.net·net runtime下载·net运行库修复·net runtime安装
宝桥南山21 小时前
.NET 11 - 尝试创建一下AGUIServer和AGUIClient(基于新版.NET SDK for AG-UI)
microsoft·ai·微软·c#·aigc·.net
波力海苔夹心脆67521 小时前
C# LINQ 入门到上手:一篇讲透查询语法、常用操作符与延迟执行(含示例与速查表
经验分享·c#·.net·solr·linq
小羊没烦恼!2 天前
Windows Azure Platform体验(1):Windows Azure
java·大数据·后端·python·flask·word·.net
CSharp精选营3 天前
IIS 后面挂 Kestrel,这 3 个配置错了就 502
kestrel·.net·iis配置
鑫 源3 天前
C#源码开源, 获取macOS 电池数据,包括iOS (xamarin开发)
c#·.net·xamarin
xiangcns5 天前
PDMS PiplineTool(三十)一堆小优化+一个彩蛋功能
.net·二次开发·pdms