.net----数据库的访问ADO.NET、DataAdapter和DataSet

news2024/9/30 3:22:19

数据库的访问

  • 前言
  • ADO.NET的概述
    • ADO.NET
    • 数据源
    • 访问处理数据类库的两个组件:
    • 引用System.Data.dll和System.Xml.dll
  • 使用ADO.NET连接和操作数据库
    • 使用数据提供程序访问数据库操作的典型步骤:
      • (1)建立数据库连接
      • (2)创建SQL命令
      • (3)执行SQL命令
      • (4)处理SQL命令结果
    • 查询数据库表数据
    • 插入数据库表数据
      • 先建立数据库连接
      • 然后使用SQL Insert语句创建命令,并使用Command的Parameters 属性来设置输入参数
      • 最后使用命令的ExecuteNonQuery()方法执行数据库记录插入操作,并根据返回的结果判断插入的结果
    • 更新数据库表数据
    • 删除数据库表数据
    • 使用存储过程访问数据库
  • 使用DataAdapter和DataSet访问数据库
    • 使用DataAdapter和DataSet访问数据库的典型步骤:
      • (1)建立数据库连接
      • (2)从DataAdapter填充DataSet
      • (3)操作和处理DataSet
      • (4)使用DataAdapter更新数据源

前言

ADO.NET的概述

使用ADO.NET连接和操作数据库

使用DataAdapter和DataSet访问数据库

ADO.NET的概述

ADO.NET

  • .NET Framework提供的数据访问服务的类库
  • 提供对关系数据、XML和应用程序数据各种数据源的一致访问
  • 应用程序使用ADO.NET连接到数据源,检索、处理和更新数据

数据源

  • SQL Server数据源:System.Data.SqlClient命名空间
  • OLEDB数据源:System.Data.OleDb命名空间
  • ODBC数据源:System.Data.Odbc命名空间
  • Oracle数据源:System.Data.OracleClient命名空间

访问处理数据类库的两个组件:

  • .NET Framework 数据提供程序

  • DataSet
    在这里插入图片描述

  • Connection:建立与数据源的连接

  • Command:对数据源执行各种SQL命令

  • DataReader:从数据源中抽取数据(只读)

  • DataAdapter:用数据源填充DataSet

引用System.Data.dll和System.Xml.dll

使用ADO.NET连接和操作数据库

使用数据提供程序访问数据库操作的典型步骤:

(1)建立数据库连接

创建Connection对象连接到特定的数据库

(2)创建SQL命令

使用Command对象来执行命令并从数据源中返回结果

(3)执行SQL命令

Command对象的Execute方法:ExecuteReader,ExecuteScalar,ExecuteNonQuery

(4)处理SQL命令结果

使用DataReader对象的Read方法可从查询结果中获取行
向DataReader传递列的名称或序号引用,可以访问返回行的每一列

查询数据库表数据

// (1)连接到数据库
String connString = @"Data Source=(LocalDB)\v11.0;Initial Catalog=Northwind;
AttachDbFilename=C:\C#\DB\Northwnd.mdf;Integrated Security=True;";
String commandTextQuery = "SELECT RegionID, RegionDescription FROM Region";

using (SqlConnection connection = new SqlConnection(connString))
{  connection.Open();
// (2)创建SqlCommand命令
            SqlCommand cmdQuery = new SqlCommand(commandTextQuery, connection);
// (3)执行SqlCommand命令并返回结果
SqlDataReader reader = cmdQuery. ExecuteReader();
Console.WriteLine("Northwind.MDF数据库的Region表的内容如下:");
Console.WriteLine("地区编号\t地区说明");
//(4)通过循环列表显示查询结果集
while (reader.Read()){ Console.WriteLine("   {0} \t\t {1}", reader[0], reader[1]); }
reader.Close();  //关闭查询结果集
}

在这里插入图片描述

插入数据库表数据

先建立数据库连接

然后使用SQL Insert语句创建命令,并使用Command的Parameters 属性来设置输入参数

SqlCommand cmdInsert = new SqlCommand(commandTextInsert, connection);
cmdInsert.Parameters.AddWithValue("@id", 5);

最后使用命令的ExecuteNonQuery()方法执行数据库记录插入操作,并根据返回的结果判断插入的结果

int result = cmdInsert.ExecuteNonQuery();
if (result == 1) { Console.WriteLine("插入记录操作成功."); }
else { Console.WriteLine("插入记录操作失败."); }

更新数据库表数据

 String commandTextUpdate = "Update Region Set RegionDescription = @name WHERE RegionID = @id";

删除数据库表数据

String commandTextDelete = "DELETE FROM Region WHERE RegionID = @id";

使用存储过程访问数据库

SqlCommand cmdQuery = new SqlCommand("Ten Most Expensive Products", connection);
cmdQuery.CommandType = CommandType.StoredProcedure;

使用DataAdapter和DataSet访问数据库

使用DataAdapter和DataSet访问数据库的典型步骤:

(1)建立数据库连接

通过创建Connection对象连接到特定的数据库
DataAdapter用于从数据源检索数据并填充DataSet中的表,还将对DataSet的更改解析回数据源,用Command对象检索数据

(2)从DataAdapter填充DataSet

DataAdapter的Fill方法使用DataAdapter的SelectCommand的结果集来填充DataSet
Fill方法使用DataReader对象隐式地返回用于在DataSet中创建表的列名称和类型

(3)操作和处理DataSet

以断开式操作DataSet的数据库表
包括数据的查询、插入、更新和删除等操作

(4)使用DataAdapter更新数据源

调用DataAdapter的Update方法,可将DataSet中的更改解析回数据源

//(1)连接到数据库
String connString = @"Data Source=(LocalDB)\v11.0;Initial Catalog=Northwind;
AttachDbFilename=C:\C#\DB\Northwnd.mdf;Integrated Security=True;";
String selectCommandText = "SELECT RegionID, RegionDescription FROM Region";
using (SqlConnection connection = new SqlConnection(connString))
{connection.Open();

//(2)创建DataAdapter
SqlDataAdapter adapter = new SqlDataAdapter(selectCommandText, connection);
DataSet dataSet = new DataSet();//创建DataSet

//(3)从DataAdapter填充DataSet
adapter.Fill(dataSet, "Region");
Console.WriteLine("Northwind数据库的Region表的内容如下:");
Console.WriteLine("地区编号 \t 地区说明 ");

//(4)操作和处理DataSet
foreach (DataRow row in dataSet.Tables["Region"].Rows)
{ Console.WriteLine("  {0} \t\t {1}", row["RegionID"], row["RegionDescription"]);}

在这里插入图片描述

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

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

相关文章

艾美捷曲妥珠单抗Trastuzumab参数和相关研究

曲妥珠单抗是一种重组人源化单克隆抗体,特异性地作用于人表皮生长因子受体-2(HER2)的细胞外部位。此抗体含人IgG1 框架,互补决定区源自鼠抗p185 HER2 抗体,能够与HER2 绑定。 HER2 原癌基因或C-erbB2 编码一个单一的受体样跨膜蛋白&#xff0…

Tyramide Cy5.5,Cyanine5.5 Tyramide,花青素Cy5.5酪酰胺远红色近红外发射染料

​一、理论分析: 中文名:花青素Cy5.5 酪酰胺 英文名:Cyanine5.5 Tyramide,Cy5.5 Tyramide,Tyramide Cy5.5 CAS号:N/A 化学式:C48H52CIN3O2 分子量:738.4 二、产品详情: 外…

【D3.js】1.20-给 D3 元素添加工具提示

title: 【D3.js】1.20-给 D3 元素添加工具提示 date: 2022-12-02 15:04 tags: [JavaScript,CSS,HTML,D3.js,SVG] 继续增强交互性:给元素添加悬停提示。 一、学习目标 如何给元素添加悬停提示? 通过title元素:增加title元素,通过.…

HTML+CSS+JS网页设计期末课程大作业——海贼王(8个页面)动漫网页设计

HTML实例网页代码, 本实例适合于初学HTML的同学。该实例里面有设置了css的样式设置,有div的样式格局,这个实例比较全面,有助于同学的学习,本文将介绍如何通过从头开始设计个人网站并将其转换为代码的过程来实践设计。 精彩专栏推荐&#x1f4…

vector类的常用接口说明

目录 一、(constructor)构造函数声明 二、vector的迭代器 三、vector的增删改查 四、insert和erase,以及查找find(find不属于vector,是stl提供的算法) 五、三种遍历方式 六、源代码 vector是可变大小数组的序列容器 一、(c…

海豚调度器分布式部署

前置准备 服务器 node01,node02,node03三台服务器(本教程服务器系统版本Linux version 3.10.0-1160.el7.x86_64) node01作为master,api,alert节点,node02和node03作为worker节点 安装包下载 下载dolphinscheduler和…

RFID数据采集成为MES系统精准数据

随着信息化、自动化成为企业发展趋势,制造执行系统(MES)是连接计划层和现场控制层之间的纽带,成为企业制造战略重要技术手段。MES生产执行系统主要在生产过程层及管理层之间加强数据集成与分析的力度,拓展优化技术应用的范围,真正…

猿创征文|Python学习工具千千万,我心中的TOP10

前言: 大家好,我是是Dream呀,在我们平时的开发和生活中,每天都在使用、寻找、贡献、创作各类开发者工具,包括开源服务、付费软件、API等。好的工具可以极大帮助我们提升效率,服务业务。作为一名资深的Pytho…

MFC下拉框控件用法

目录 一、属性方式设置下拉框内容 1.Combo Box下拉框 2.Data属性 3.Type属性 4.Sort属性 二、初始化OnInitDialog设置下拉框内容 1.添加Combo Box下拉框变量 2.AddString方法添加选项 3.SetCurSel设置默认显示内容 4.InsertString方法插入内容 4.DeleteString删除指…

数据中心网络设计- 叶脊(Spine-Leaf)网络架构

大家好,我是技福的小咖老师。 随着业务形态的变化,数据中心网络的交换架构也在不断的发展。传统的三层网络结构应用广泛而且技术成熟,但随着技术的发展趋势,它的瓶颈也不断涌现,导致越来越多的网络工程师放弃这种结构…

[附源码]计算机毕业设计JAVA校园一卡通管理信息系统台

[附源码]计算机毕业设计JAVA校园一卡通管理信息系统台 项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM…

C#上位机系列(5)—示波器二基础代码+线条绘制

本文是讲解C#.net平台的Winform框架下的第四个内容,手把手介绍上位机项目的创建方式以及一些写软件时常用的功能,讲解从零开始的每一个步骤。 接上一节的介绍,本次内容为上位机项目中示波功能代码的基本函数和画图功能。 目的是通过几行代码…

【联邦学习】联邦学习量化——non-iid数据集下的仿真

文章目录改进项目背景量化函数的改进non-iid数据集的设置Fedlab划分数据集的踩雷改进项目背景 在前面的项目中,虽然对联邦学习中,各个ue训练出来的模型上传的参数进行了量化,并仿真的相关结果。但是仍有一些俺不是非常符合场景的情况&#x…

《Hive性能调优实战》读书笔记

很不错的一本书。章节划分清晰明了,可根据个人需要读相应的章节。Hive各个方面的知识体系都有涉及。可作为工具书,常读常新,值得翻阅。 第2章 Hive问题排查与调优思路 优化方法 PL-SQL和T-SQL经验总结: 通过改写SQL&#xff0…

Hust计算机组成原理实验

文章目录logisim的使用1.添加门电路2.添加引脚3.添加导线4.添加文本5.测试电路补充工具实验一,运算器实验8位串行可控加减法器分析一位全加器八位串行加法器即可给出8位串行可控加减法器回答问题CLA74182(先行进位加法器)参数公式问题位快速加…

10个最常见的JavaScript问题

如今,JavaScript几乎是所有现代web应用程序的核心。这就是为什么JavaScript问题以及找出导致这些问题的错误是web开发人员的首要任务。 用于单页应用程序(SPA)开发、图形和动画以及服务器端JavaScript平台的强大的基于JavaScript的库和框架并…

opencv c++ 二值图像、阈值计算方法、全局阈值、自适应阈值

1、图像定义: 彩色图像 :三通道,像素值一般为0~255; 灰度图像:单通道,像素值一般为0~255; 二值图像:单通道,像素值一般为0(黑色)、255&#xff08…

Python计算器(包含机制转换)

实现思路: 要优先处理内层括号运算--外层括号运算--先乘除后加减的原则: 1、正则处理用户输入的字符串,然后对其进行判断,判断计算公式是否有括号,有就先将计算公式进行…

判断二叉树是否是平衡二叉树(c#)

问题描述 给定一棵二叉树,判断其是否为平衡二叉树。 示例 示例1 Input: root [3,9,20,null,null,15,7] Output: true 示例2 Input: root [1,2,2,3,3,null,null,4,4] Output: false 解决方案描述 二叉树的每个节点的左子节点和右子节点的高度差小于等于1&#x…

Windows和Linux混合系统通过AD域实现用户集中认证

一、Windows AD域 1、统一认证简介 管理的Linux服务器和Windows服务器如果很多,如果都用本地用户名管理,要管理和记住几十台甚至上百台服务器的不同账号不同密码,这是很难的。但是如果所有服务器账号密码都设置一样,那又完全没有安全性可言。 什么是服务器的集中认证(统…