ADO.NET数据处理框架


文章目录

  • 项目地址
  • 一、sqlDataReader连接模式
    • 1.1 创建数据库连接
    • 1.2 执行语句
    • 1.3 读取数据
  • 二、SqlDataAdapter适配器模式—断开模式(常用)
    • 2.1 使用DataTable读取数据
      • 2.1.1 直接使用DataTable
  • 三、读取配置文件
  • 四、数据库连接池


项目地址

  • 教程作者:
  • 教程地址:
  • 代码仓库地址:
  • 所用到的框架和插件:
dbt 
airflow

一、sqlDataReader连接模式

  • 该模式下,需要一直保持连接,对数据库 占用比较大,所以比较少用,了解

1.1 创建数据库连接

  • 直接创建连接,每次都要写close,容易出错
SqlConnection conn = new("Server=DESKTOP-CL0GECF;Database=sql_advanced_tutorial;uid=sa;pwd=123123;Integrated Security=True");conn.Open();Console.WriteLine(conn.State);
Console.WriteLine(conn.Database);
Console.WriteLine(conn.ServerVersion);
Console.WriteLine(conn.ConnectionTimeout);conn.Close();
  • 使用自动释放创建连接,自动close
SqlConnection conn;
using (conn = new("Server=DESKTOP-CL0GECF;Database=sql_advanced_tutorial;uid=sa;pwd=123123.;Integrated Security=True"))
{conn.Open();Console.WriteLine(conn.State);Console.WriteLine(conn.Database);Console.WriteLine(conn.ServerVersion);Console.WriteLine(conn.ConnectionTimeout);
} 
  • 简写
using SqlConnection conn = new("Server=DESKTOP-CL0GECF;Database=sql_advanced_tutorial;uid=sa;pwd=shangxi123.");
conn.Open(); 

1.2 执行语句

1.读取首行首列cmd.ExecuteScalar();
2. 增,删查 cmd2.ExecuteNonQuery();
3. 返回所有查询(少量数据)cmd3.ExecuteReader();

using System.Data.SqlClient;//连接
using SqlConnection conn = new("Server=DESKTOP-CL0GECF;Database=AdventureWorks2017;uid=sa;pwd=123123.");
conn.Open();//执行首行首列
using SqlCommand cmd = new("SELECT count(1) FROM Person.Password", conn);
cmd.ExecuteScalar();//执行增删改
using SqlCommand cmd2 = new("delete id ", conn);
cmd2.ExecuteNonQuery();//读取数据
using SqlCommand cmd3 = new("SELECT * FROM Person.Password", conn);
cmd3.ExecuteReader();

1.3 读取数据

  • 由于读取数据是不能断开连接的,尤其是大量数据的时候
//读取数据
using SqlCommand cmd3 = new("SELECT * FROM product", conn);
using SqlDataReader sqlDataReader =  cmd3.ExecuteReader();while (sqlDataReader.Read())
{var product = new Product((int)sqlDataReader["Id"],(string)sqlDataReader["Name"],(decimal)sqlDataReader["Price"]);}
//将需要读取的数据先封装成一个类
record Product(int Id,string Name, decimal Price);

二、SqlDataAdapter适配器模式—断开模式(常用)

  • 一次连接取得数据后,即可断开,且都将存在内存之中,不会占用数据库资源;

2.1 使用DataTable读取数据

2.1.1 直接使用DataTable

  • 将DataTable的数据存放List里
using System.Data;
using System.Data.SqlClient;//创建连接
SqlConnection conn = new("Server=DESKTOP-CL0GECF;Database=demo01;uid=sa;pwd=shangxi123.");
//sql语句
string sql = "select * from Products"; 
//创建适配器
SqlDataAdapter adapter = new(sql, conn);
//创建数据集dt
DataTable dt = new();
adapter.Fill(dt);
Console.WriteLine(dt.Rows.Count);
//创建一个空集合,用来存放数据
List<Products> list = new();
//遍历数据集dt
foreach (DataRow row in dt.Rows)
{//创建对象Products products = new(Convert.ToString(row["Name"]),Convert.ToInt32(row["Price"]));//将对象添加到集合中list.Add(products);
}record Products(string Name,int Price);

三、读取配置文件

  1. 创建App.config
<?xml version="1.0" encoding="utf-8"?>
<configuration><connectionStrings><!--本机数据库连接字符串--><add name ="localString" connectionString="Server=DESKTOP-CL0GECF;Database=demo01;uid=sa;pwd=xxxxx."/><!--DevUser--><add name ="devString" connectionString="Server=DESKTOP-CL0GECF;Database=demo01;uid=sa;pwd=123123."/></connectionStrings></configuration> 
  1. 创建连接
<?xml version="1.0" encoding="utf-8"?>
<configuration><connectionStrings><!--本机数据库连接字符串--><add name ="localString" connectionString="Server=DESKTOP-CL0GECF;Database=demo01;uid=sa;pwd=shangxi123."/><!--DevUser--><add name ="devString" connectionString="Server=DESKTOP-CL0GECF;Database=demo01;uid=sa;pwd=shangxi123."/></connectionStrings></configuration> 

四、数据库连接池

  • 数据库连接池默认是打开的
    手动关闭连接池
<?xml version="1.0" encoding="utf-8"?>
<configuration><connectionStrings><!--本机数据库连接字符串--><add name ="localString" connectionString="Server=DESKTOP-CL0GECF;Database=demo01;uid=sa;pwd=123123.;pooling=false"/><!--DevUser--><add name ="devString" connectionString="Server=DESKTOP-CL0GECF;Database=demo01;uid=sa;pwd=123123."/></connectionStrings>
</configuration> 
  • 计时器

using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.Diagnostics;string connectionString = ConfigurationManager.ConnectionStrings["localString"].ConnectionString;
Stopwatch sw = new Stopwatch();
sw.Start();
//1.创建连接
SqlConnection conn = new(connectionString);using SqlDataAdapter adapter = new("select * from Products", conn);
DataTable dt = new();
adapter.Fill(dt);
Console.WriteLine(dt.Rows.Count);
sw.Stop();
Console.WriteLine("共耗时:"+ sw.ElapsedMilliseconds/1000.0);

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WPF之iconfont(字体图标)使用

1&#xff0c;前文&#xff1a; WPF的Xaml是与前端的Html有着高度相似性的标记语言&#xff0c;所以Xaml也可同Html一般轻松使用阿里提供的海量字体图标&#xff0c;从而有效的减少开发工作度。 2&#xff0c;下载字体图标&#xff1a; 登录阿里图标库网iconfont-阿里巴巴矢量…

内网部署web项目,外网访问不了?只有局域网能访问!怎样解决?

相关技术 要实现“内网部署&#xff0c;外网访问”&#xff0c;可以使用内网穿透、VPN技术、DMZ主机、端口映射等方法。以下是对这些方法的详细解释&#xff1a; 一、内网穿透 内网穿透是一种技术&#xff0c;它通过将内网设备映射到公网上的方式&#xff0c;实现外网访问内…

Android MVVM demo(使用DataBinding,LiveData,Fresco,RecyclerView,Room,ViewModel 完成)

使用DataBinding&#xff0c;LiveData&#xff0c;Fresco&#xff0c;RecyclerView&#xff0c;Room&#xff0c;ViewModel 完成 玩Android 开放API-玩Android - wanandroid.com 接口使用的是下面的两个&#xff1a; https://www.wanandroid.com/banner/jsonhttps://www.wan…

c++11(一)

c11&#xff08;一&#xff09; 1. C11的发展历史2. 列表初始化2.1 C98传统的{}2.2 C11中的{}2.3 C11中的std::initializer_list 3. 右值引⽤和移动语义3.1 左值和右值3.2 左值引⽤和右值引⽤3.3 引⽤延⻓⽣命周期3.4 左值和右值的参数匹配3.5 右值引⽤和移动语义的使⽤场景3.5…

‍️代码的华尔兹:在 Makefile 的指尖上舞动自动化的诗篇

文章目录 &#x1f636;‍&#x1f32b;️&#x1f636;‍&#x1f32b;️&#x1f636;‍&#x1f32b;️背景——一个优秀工程师必备技能&#x1f636;‍&#x1f32b;️&#x1f636;‍&#x1f32b;️&#x1f636;‍&#x1f32b;️一、&#x1f929;&#x1f929;快速了解…

SpringBoot中使用Thymeleaf模板引擎

和使用freemarker差不多的方式 1、导入thymeleaf的启动器 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> 2、编写Controller类 3、编写模板页面 注…

vue之子组件向父组件传值

参考博客先挂上 vue3中子传父&#xff08;emit&#xff09;、父传子&#xff08;props&#xff09;一篇文章拿下第一次写文章&#xff0c;告诉你vue3中如何实现父子相传&#xff0c;一篇文章帮 - 掘金 父组件通过 props 向子组件传值 1.子组件使用 $emit 触发事件 2.在父组件…

第26天 安全开发-PHP应用模板引用Smarty渲染MVC模型数据联动RCE安全

时间轴&#xff1a; 演示案例 新闻列表&模板引用-代码RCE安全 知识点 1、PHP 新闻显示-数据库操作读取显示 2、PHP 模版引用-自写模版&Smarty 渲染 3、PHP 模版安全-RCE 代码执行&三方漏洞 新闻列表 1.数据库创建新闻存储 2.代码连接数据库读取 3.页面进行自定…

【微服务】Docker 容器化

一、初识Docker 1. 为什么需要 Docker 大型项目组件较多&#xff0c;运行环境也较为复杂&#xff0c;部署时会遇到一些问题&#xff1a; 依赖关系复杂&#xff0c;容易出现兼容性的问题开发、测试、生产环境有差异 Docker 如何解决依赖的兼容问题 将应用的Libs&#xff08;…

(十四)JavaWeb后端开发——MyBatis

目录 1.MyBatis概述 2.MyBatis简单入门 3.JDBC&#xff08;了解即可&#xff09; 4.数据库连接池​ 5.lombok 6.MyBatis基本操作 7.XML映射文件 8.动态SQL 8.1 if标签 8.2 foreach标签 8.3 sql/include标签​ 1.MyBatis概述 MyBatis是一款优秀的持久层&#xff08…

pytorch实现深度神经网络DNN与卷积神经网络CNN

DNN概述 深度神经网络DNN来自人脑神经元工作的原理&#xff0c;通过在计算机中逻辑抽象出多个节点&#xff0c;接收处理并向后传递信息&#xff0c;实现计算机的自我学习&#xff0c;类比结构见下图&#xff1a; 该方法通过预测输出与实际值的差异不断调整节点参数&#xff0…

私域流量圈层在新消费时代的机遇与挑战:兼论开源 AI 智能名片、2 + 1 链动模式、S2B2C 商城小程序的应用

摘要&#xff1a;本文剖析了私域流量圈层在新消费时代呈现出的独特温度与信任优势&#xff0c;阐述了从传统销售到新消费转型中用户心理的变化。同时&#xff0c;强调了内容对于私域流量的关键作用&#xff0c;并分析开源 AI 智能名片、2 1 链动模式、S2B2C 商城小程序在私域流…

1.4 配置 Android 构建系统

Android 构建系统会编译应用资源和源代码&#xff0c;然后将它们打包成 APK 或 Android App Bundle 文件&#xff0c;供您测试、部署、签名和分发。 创建自定义 build 配置需要您对一个或多个 build 配置文件做出更改。这些纯文本文件使用领域特定语言 (DSL) 通过 Kotlin 脚本&…

containerd配置私有仓库registry

机器ip端口regtisry192.168.0.725000k8s-*-------k8s集群 1、镜像上传 rootadmin:~# docker push 192.168.0.72:5000/nginx:1.26.1-alpine The push refers to repository [192.168.0.72:5000/nginx] 6961f0b8531c: Pushed 3112cd521249: Pushed d3f50ce9b5b5: Pushed 9efaf2eb…

ABAP:SET CURSOR FIELD设置鼠标焦点

SET CURSOR FIELD <字段名>&#xff1a;设置鼠标焦点到该字段 SET CURSOR 设置到鼠标焦点列还是行 SET CURSOR LINE 设置鼠标焦点到行 GET CURSOR field <字段名> &#xff1a;这个相对应的获取鼠标焦点得到的字段

PHP和Python脚本的性能监测方案

目录 1. 说明 2. PHP脚本性能监测方案 2.1 安装xdebug 2.2 配置xdebug.ini 2.3 命令行与VS Code中使用 - 命令行 - VS Code 2.4 QCacheGrind 浏览 3. Python脚本性能监测方案 3.1 命令行 4. 工具 5.参考 1. 说明 获取我们的脚本程序运行时的指标&#xff0c;对分析…

VS code 远程连接到docker容器

1.需要在vscode中下载remote 、docker、dev container插件。 如下图&#xff1a; 有小鲸鱼标志&#xff0c;说明已经成功。 右键可以运行或者停止容器运行

阿里1688 阿里滑块 231滑块 x5sec分析

声明: 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;抓包内容、敏感网址、数据接口等均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff01; 有相关问题请第一时间头像私信联系我删…

Spring Validation数据校检

文章目录 Spring Validation1 关于Spring Validation2 使用流程3 快速入门4 运行异常处理4.1 说明4.2 处理异常4.3 明确提示消息 5 常用注解5.1 NotNull注解5.2 NotEmpty 注解5.3 NotBlank 注解5.4 Size 注解5.5 Range 注解 6 非POJO参数校验6.1 使用流程6.2 使用示例 Spring V…

‌STAR法则

一&#xff1a;STAR法则 STAR法则是一种简单而实用的表现技巧&#xff0c;常被用于求职过程中的个人经历描述&#xff0c;富有条理性&#xff0c;可以帮助你在职场中脱颖而出。“STAR”分别对应的是situation-task-action-result&#xff0c;通过情境、目标、行动和结果四个方面…