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

C#中在.NET 7.0控制台应用使用ADO.NET的方法

目录

一、新建.NET Framwork类、通过ADO.NET访问数据库并生成库

1.操作流程        

2.库源码

3.生成库

二、再建 .NET 7.0控制台应用、依赖像引用库

1. 操作流程

2.program.cs源码

3.在program.cs中查看类Class1定义


        作者在上一篇文章中曾说过.NET 7.0框架下不支持ADO.NET的方法访问数据库,只有.NET Framwork框架下的应用才完美地支持ADO.NET的方法访问数据库。

        事实上,.NET Framwork框架下使用ADO.NET的方法访问数据库,就是微软让用户使用ADO.NET的实体框架模型为媒介去访问数据库,通过ADO.NET建立实体数据模型,简单易用,极大简化了用户的编程操作。在.NET 7.0框架下微软没有提供这种类似的媒体通道,因此,用户也就不能像在.NET Framwork框架下那样,便捷地、快速地建立一个实体框架,然后籍此框架访问数据库。

        .NET 7.0框架下虽然不提供直接的支持ADO.NET,但不是说就一定不能使用ADO.NET,只要用户使用编程的手段,设计一个.NET Framwork框架下类似ADO.NET那样的功能的模型,在这个模型里通过ADO.NET建立对数据库的访问,然后生成.exe或.dll。再另外创建  .NET 7.0框架下应用,在应用的外部依赖里添加引用,指引到前面生成的.exe或.dll。就可以实现在  .NET 7.0框架下间接地通过ADO.NET建立对数据库的访问。

一、新建.NET Framwork类、通过ADO.NET访问数据库并生成库

1.操作流程        

        VS2022→ 新建C#类库(.NET Framwork),添加ADO.NET类,指引到数据库→ 编写对数据库操作的应用→生成.dll。

2.库源码

using System;
using System.Linq;namespace ClassLibrary1
{public class Class1{public static string MyID, MyName, MySex, MyAge, MyTel, MyAddr, MyQQ, MyEmail;public void ReadFromSql(string _myID){//读数据库//_myID = "YGBH0001";ReadFrdb(_myID);}#region 通过ADO.NET读数据库/// <summary>/// 读数据库tb_Employee/// </summary>static void ReadFrdb(string _myID){using (db_CSharpEntities db = new db_CSharpEntities()){tb_Employee employee = db.tb_Employee.Where(W => W.ID == _myID).FirstOrDefault();{MyID = employee.ID;MyName= employee.Name;MySex= employee.Sex;MyAge = employee.Age.ToString();MyTel = employee.Tel;MyAddr = employee.Address;MyQQ = employee.QQ.ToString();MyEmail = employee.Email;};Console.WriteLine(MyID,MyName,MySex,MyAge,MyTel,MyAddr,MyQQ,MyAge);}}//char[] tb_Employee = new char[] { };#endregion 通过ADO.NET读数据库}
}

3.生成库

        生成库 ClassLibrary1.dll

二、再建 .NET 7.0控制台应用、依赖像引用库

1. 操作流程

        VS2022→再建 .NET 7.0控制台应用→右侧,资源管理器,项目,新建文件夹,起名为bin,→ bin的右键,添加,现有项,找到上面生成的库文件ClassLibrary1.dll,添加→项目,依赖项,添加项目引用,浏览,找到bin文件夹下的ClassLibrary1.dll,添加→编写应用,调用库文件→ 生成。

2.program.cs源码

// 在.NET7.0控制台应用里添加现有项Class1.cs,
// 在.NET7.0控制台应用依赖项里添加Class1.cs项目生成的dll库ClassLibrary1.dll
// 编写Program.cs应用
using System.Runtime.InteropServices;   // 用 DllImport 需用此 命名空间
using System.Reflection;                // 使用 Assembly 类需用此 命名空间
using System.Reflection.Emit;           // 使用 ILGenerator 需用此 命名空间
using ClassLibrary1;namespace _10_6 
{ class Program{private static void Main(){Class1 _Class = new();_Class.ReadFromSql("YGBH0002");         }}
}

3.在program.cs中查看类Class1定义

#region 程序集 ClassLibrary1, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
// G:\C#_TM\chapter15\10_6\10_6\lib\ClassLibrary1.dll
// Decompiled with ICSharpCode.Decompiler 7.1.0.6543
#endregionusing System;
using System.Linq;namespace ClassLibrary1
{public class Class1{public static string MyID;public static string MyName;public static string MySex;public static string MyAge;public static string MyTel;public static string MyAddr;public static string MyQQ;public static string MyEmail;public void ReadFromSql(string _myID){_myID = "YGBH0001";ReadFrdb(_myID);}private static void ReadFrdb(string _myID){using db_CSharpEntities db_CSharpEntities2 = new db_CSharpEntities();tb_Employee tb_Employee2 = db_CSharpEntities2.tb_Employee.Where((tb_Employee W) => W.ID == _myID).FirstOrDefault();MyID = tb_Employee2.ID;MyName = tb_Employee2.Name;MySex = tb_Employee2.Sex;MyAge = tb_Employee2.Age.ToString();MyTel = tb_Employee2.Tel;MyAddr = tb_Employee2.Address;MyQQ = tb_Employee2.QQ.ToString();MyEmail = tb_Employee2.Email;Console.WriteLine(MyID, MyName, MySex, MyAge, MyTel, MyAddr, MyQQ, MyAge);}}
}

        由此,可以看出在 .NET 7.0框架下通过上述操作,果然间接地通过ADO.NET访问了数据库。虽然这种方法因个人设计的模型而不一定一次就成功,但是这种通过.NET Framework媒介一下的思想一定是成功的。遭遇调试错误,就修改自己的程序最后一定会成功。几个需要注意的地方:框架的版本和ADO.NET版本要匹配,框架的版本和依赖的EF程序包版本要匹配。

相关文章:

C#中在.NET 7.0控制台应用使用ADO.NET的方法

目录 一、新建.NET Framwork类、通过ADO.NET访问数据库并生成库 1.操作流程 2.库源码 3.生成库 二、再建 .NET 7.0控制台应用、依赖像引用库 1. 操作流程 2.program.cs源码 3.在program.cs中查看类Class1定义 作者在上一篇文章中曾说过.NET 7.0框架下不支持ADO…...

垃圾回收(GC)

目录 什么是垃圾,什么是垃圾回收? 为什么要GC?(利弊) 怎么判断是垃圾 引用计数法: <...

【无标题】通用工作站设计方案:ORI-D3R600服务器-多路PCIe3.0的双CPU通用工作站

ORI-D3R600服务器-多路PCIe3.0的双CPU通用工作站 一、机箱功能和技术指标&#xff1a; 系统 系统型号 ORI-SR630 主板支持 EEB(12*13)/CEB(12*10.5)/ATX(12*9.6)/Micro ATX 前置硬盘 最大支持8个3.5寸(兼容25寸)SATA硬盘 2*2.5(后置) 电源类型 CRPS元余电源&#xff0…...

HarmonyOS元服务实现今天吃什么

一、前言 作为一个职业打工人&#xff0c;每天点外卖吃啥东西都有选择综合症&#xff0c;突发奇想让程序帮我们随机选择一个吃的&#xff0c;是不是可以解决我们的选择问题呢&#xff0c;说干就干&#xff0c;我们就使用HarmonyOS元服务实现一下这个功能。为什么选择这个Harmon…...

激活函数的本质

激活函数&#xff08;Activation Function&#xff09; 是神经网络中的一种函数&#xff0c;它接受一个输入&#xff08;通常是神经元的加权和&#xff09;并产生一个输出作为神经元的最终输出。激活函数的作用是引入非线性性&#xff0c;使神经网络能够学习复杂的模式和关系。…...

[工业自动化-18]:西门子S7-15xxx编程 - 软件编程 - PLC用于工业领域的嵌入式系统:硬件原理图、指令系统、系统软件架构、开发架构等

目录 前言&#xff1a; 一、PLC的硬件电路原理 1.1 硬件框图 1.2 硬件模块详解 &#xff08;1&#xff09;CPU &#xff08;2&#xff09;存储器 &#xff08;3&#xff09;输入/输出&#xff08;I/O&#xff09;模块 &#xff08;4&#xff09;编程器 &#xff08;5&a…...

【C++】——运算符重载

&#x1f383;个人专栏&#xff1a; &#x1f42c; 算法设计与分析&#xff1a;算法设计与分析_IT闫的博客-CSDN博客 &#x1f433;Java基础&#xff1a;Java基础_IT闫的博客-CSDN博客 &#x1f40b;c语言&#xff1a;c语言_IT闫的博客-CSDN博客 &#x1f41f;MySQL&#xff1a…...

怎么理解独立机器和虚拟机

独立服务器&#xff1a;顾名思义&#xff0c;就是一个放在机房的实实在在的物理服务器&#xff0c;一个单独的主机&#xff08;具有性能高&#xff0c;处理速度快等优点&#xff0c;但 也有价格高&#xff0c;可扩展性不强等缺点&#xff09; vps&#xff1a;虚拟专用服务器,一…...

以太网和局域网

计算机网络的定义 计算机网络是一个将分散的、具有独立功能的计算机&#xff0c;通过通信设备与线路连接起来&#xff0c;由根据协议编写的软件来实现的资源共享和信息传递的系统 计算机网络的分类 广域网是互联网的核心部分 局域网 常见的局域网拓扑结构有4大类&#xff1a…...

【Git】第三篇:基本操作(配置本地仓库)

初次使用git需要设置你的用户名以及邮箱&#xff0c;这将作为当前机器git的标识&#xff0c;如果你用它来下载远程仓库一些需要登录权限的仓库会要求登录&#xff0c;git默认使用配置邮箱以及用户名登入&#xff0c;但会要求你手动输入密码。 配置本地仓库&#xff1a;git con…...

JS中sort排序

在我们JS排序中&#xff0c;有许多排序的方法&#xff0c;比如冒泡排序、选择排序等等。这次我为大家介绍一下sort排序&#xff01; sort 按照 Unicode code 位置排序&#xff0c;默认升序 默认情况下&#xff0c;sort()会按照升序重新排序数组&#xff0c;即最小值在前最大值…...

【现场问题】datax中write部分为Oracle的时候插入clolb类型字段,插入的数据为string且长度过场问题

datax的Oraclewriter 报错显示查询报错展示查找datax中的数据插入模块 报错显示 occurred during batching: ORA-01704: string literal too long 查询报错展示 基本上查到的都是这样的&#xff0c;所以锁定是clob的字段类型的问题&#xff0c;而且是只有Oracle出问题&#…...

ASK、PSK、FSK的调制与解调

ASK、PSK、FSK的调制与解调 本文主要涉及数字信号的调制与解调&#xff0c;内容包括&#xff1a;2ASK、2PSK、2FSK的调制与解调以及频谱分析 关于通信原理还有其他文章可参考&#xff1a; 1、信息量、码元、比特、码元速率、信息速率详细解析——实例分析 2、模拟系统的AM信号的…...

基于XML的声明式事务

场景模拟 参考基于注解的声明式事务 修改Spring的配置文件 将Spring配置文件中去掉tx:annotation-driven标签&#xff0c;并添加配置&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org…...

力扣labuladong一刷day9滑动窗口共4题

力扣labuladong一刷day9滑动窗口共4题 文章目录 力扣labuladong一刷day9滑动窗口共4题一、76. 最小覆盖子串二、567. 字符串的排列三、438. 找到字符串中所有字母异位词四、3. 无重复字符的最长子串 一、76. 最小覆盖子串 题目链接&#xff1a;https://leetcode.cn/problems/m…...

ubuntu开机系统出错且无法恢复。请联系系统管理员。

背景&#xff1a; ubuntu22.04.2命令行&#xff0c;执行自动安装系统推荐显卡驱动命令&#xff0c;字体变大&#xff0c;重启后出现如下图错误&#xff0c;无法进入系统&#xff0c;无法通过CTRLALTF1-F3进入TTY模式。 解决办法&#xff1a; 1.首先要想办法进入系统&#xff…...

Transformer详解一:transformer的由来和先导知识

目录 参考资料前言一、预训练二、神经网络语言模型&#xff08;NNLM&#xff09;&#xff1a;预测下一个词one-hot编码的缺陷词向量&#xff08;word embedding&#xff09; 三、Word2Vec模型&#xff1a;得到词向量CBOWSkip-gramWord2Vec和NNLM的区别Word2Vec的缺陷 四、ELMO模…...

数字化产品经理的金字塔能力模型

在企业数字化转型的浪潮下&#xff0c;要求IT团队更加主动的服务业务、赋能业务&#xff0c;而数字化产品经理正是IT、业务融合的桥梁&#xff0c;该岗位需要具备业务、技术、商业的复合知识结构&#xff0c;并且拥有很强的自驱力。那么数字化产品经理在企业如何产生价值、赋能…...

这 11 个 for 循环优化你得会

日常开发中&#xff0c;经常会遇到一些循环耗时计算的操作&#xff0c;一般也都会采用 for 循环来处理&#xff0c;for 作为编程入门基础&#xff0c;主要是处理重复的计算操作&#xff0c;虽然简单好用&#xff0c;但在写法上也有很多的考究&#xff0c;如果处理不好&#xff…...

JVM字符串常量池StringTable

目录 一、StringTable为什么要调整 二、String的基本特性 三、String的内存分配 四、字符串拼接操作 五、intern()方法 六、Stringtable的垃圾回收 七、G1中String去重操作 一、StringTable为什么要调整 jdk7之前&#xff0c;hotspot对于方法区的实现是永久代&#xff…...

大数据零基础学习day1之环境准备和大数据初步理解

学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 &#xff08;1&#xff09;设置网关 打开VMware虚拟机&#xff0c;点击编辑…...

系统设计 --- MongoDB亿级数据查询优化策略

系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log&#xff0c;共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题&#xff0c;不能使用ELK只能使用…...

苍穹外卖--缓存菜品

1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得&#xff0c;如果用户端访问量比较大&#xff0c;数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据&#xff0c;减少数据库查询操作。 缓存逻辑分析&#xff1a; ①每个分类下的菜品保持一份缓存数据…...

Ascend NPU上适配Step-Audio模型

1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统&#xff0c;支持多语言对话&#xff08;如 中文&#xff0c;英文&#xff0c;日语&#xff09;&#xff0c;语音情感&#xff08;如 开心&#xff0c;悲伤&#xff09;&#x…...

uniapp中使用aixos 报错

问题&#xff1a; 在uniapp中使用aixos&#xff0c;运行后报如下错误&#xff1a; AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...

什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南

文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/55aefaea8a9f477e86d065227851fe3d.pn…...

Rapidio门铃消息FIFO溢出机制

关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系&#xff0c;以下是深入解析&#xff1a; 门铃FIFO溢出的本质 在RapidIO系统中&#xff0c;门铃消息FIFO是硬件控制器内部的缓冲区&#xff0c;用于临时存储接收到的门铃消息&#xff08;Doorbell Message&#xff09;。…...

.Net Framework 4/C# 关键字(非常用,持续更新...)

一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...

C# 表达式和运算符(求值顺序)

求值顺序 表达式可以由许多嵌套的子表达式构成。子表达式的求值顺序可以使表达式的最终值发生 变化。 例如&#xff0c;已知表达式3*52&#xff0c;依照子表达式的求值顺序&#xff0c;有两种可能的结果&#xff0c;如图9-3所示。 如果乘法先执行&#xff0c;结果是17。如果5…...

PostgreSQL——环境搭建

一、Linux # 安装 PostgreSQL 15 仓库 sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-$(rpm -E %{rhel})-x86_64/pgdg-redhat-repo-latest.noarch.rpm# 安装之前先确认是否已经存在PostgreSQL rpm -qa | grep postgres# 如果存在&#xff0…...