学习情境四 任务9 ADO.NET数据访问.

Slides:



Advertisements
Similar presentations
ADO.NET – 连接数据库. 2 课程地位 STB SQL Server XML PSPM ASP.NET Oracle OOAD Computer Base HTML&JavaScript OOP\Java C C SQL Base JSP/Servlet EJB/WebService C#
Advertisements

面向侧面的程序设计 方林博士 本文下载地址:
第六 章数据库访问页 6.1 数据访问页视图 6.2 创建数据访问页 6.3 编辑数据访问页 6.4 查看数据访问页 退出.
第7章利用ADO.NET 进行数据访问.
ADO .NET 簡介.
第8章 设计数据库应用网站 本章讲述的主要内容 8.1 数据库基础知识 8.2 使用数据库系统 8.3 SQL查询基础
第6章 ADO.NET数据库编程.
Oracle数据库 Oracle 子程序.
在PHP和MYSQL中实现完美的中文显示
Visual C# 2010 程式設計經典 第15章 ADO .NET與資料工具.
Hadoop I/O By ShiChaojie.
SVN的基本概念 柳峰
ADO.NET.
主 讲 教 师:陆有军 Web技术与应用 第六章 ADO.NET 主 讲 教 师:陆有军
課程名稱:資料庫系統 授課老師:李春雄 博士
第6章 ADO.NET数据访问接口 6.
上述代码规范了 INSERT 语句的编写规范,其中:
第2章 ADO.NET 2.0概述.
存储系统.
第9章 事务.
5.1.1 使用 ExecuteReader()操作数据库
SVN服务器的搭建(Windows) 柳峰
SQL Injection.
走进编程 程序的顺序结构(二).
辅导课程六.
操作数据库 C#程序设计课程组.
第六单元 ADO.net数据库操作 劳动和社会保障部全国计算机信息高新技术考试指定教材——ASP.NET.
使用ADO.NET访问数据 数据库连接 C#程序设计课程组.
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
第十章 IDL访问数据库 10.1 数据库与数据库访问 1、数据库 数据库中数据的组织由低到高分为四级:字段、记录、表、数据库四种。
以ISI平台为例,为您演示一下如何在Endnote文献中查看该文献的References
第17章 网站发布.
CPU结构和功能.
C# 程序设计教程 同济大学计算机系基础学科组
Connection对象 访问数据库的第一步是建立连接,只有建立连接,才可能实现 在数据库和应用程序之间移动数据。 ADO提供了连接对象:
第 8 章 VB.NET与数据库应用程序 本章主要内容: ADO.NET体系结构; VB.NET与SQL Server数据库的连接;
用event class 从input的root文件中,由DmpDataBuffer::ReadObject读取数据的问题
DevDays ’99 The aim of this mission is knowledge..
任务1-3 使用Dreamweaver创建ASP网页
程序设计工具实习 Software Program Tool
SOA – Experiment 2: Query Classification Web Service
第五讲 酒店客房管理系统(一) 教育部“十二五”职业教育国家规划教材
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
简单介绍 用C++实现简单的模板数据结构 ArrayList(数组, 类似std::vector)
第十讲 学生成绩管理系统(一) 精品教程《C#程序设计与应用(第2版)清华大学出版社 谭恒松 主编
SQL 范引娣.
第四章 团队音乐会序幕: 团队协作平台的快速创建
通讯录管理系统设计 常州工程职业技术学院 计算机技术系.
第 10 章 ADO.NET與XML.
商业分析平台-语义元数据 用友集团技术中心 边传猛 2013年 11月 06日.
VB与Access数据库的连接.
实验七 安全FTP服务器实验 2019/4/28.
计算机网络与网页制作 Chapter 07:Dreamweaver CS5入门
ASP.NET实用教程 清华大学出版社 第9章数据库应用 教学目标 教学重点 教学过程 2019年5月3日.
数据库系统与应用实验 基于SQL Server 2005.
第4章 Excel电子表格制作软件 4.4 函数(一).
iSIGHT 基本培训 使用 Excel的栅栏问题
Visual Basic程序设计 第13章 访问数据库
Delphi 7.0开发示例.
GIS基本功能 数据存储 与管理 数据采集 数据处理 与编辑 空间查询 空间查询 GIS能做什么? 与分析 叠加分析 缓冲区分析 网络分析
阻塞式模型 本节内容 视频提供:昆山爱达人信息技术有限公司 视频录制:yang 官网地址:
基于列存储的RDF数据管理 朱敏
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
Chinese Virtual Observatory
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
VB与Access数据库的连接.
WEB程序设计技术 数据库操作.
使用ADO访问数据库 李宝智 BonizLee 课程 10564A
创建、启动和关闭Activity 本讲大纲: 1、创建Activity 2、配置Activity 3、启动和关闭Activity
使用Fragment 本讲大纲: 1、创建Fragment 2、在Activity中添加Fragment
Presentation transcript:

学习情境四 任务9 ADO.NET数据访问

主要学习任务 ADO.NET模型 Connection对象 Command对象 DataReader对象 DataSet和DataAdapter对象

4.1 ADO.NE模型 4.1.1 ADO.NET简介 ADO.NET相对于ADO有了很大的改进。ADO.NET与ADO既相似又有很大的区别。二者都能够编写对数据库服务器中的数据进行访问和操作的应用该程序,并且具有易于使用、高速度、低内存支出和占用磁盘空间较少等特点,支持用于建立基于客户机/服务器和Web应用程序的主要功能。但是ADO使用OLE DB接口并且基于微软公司的COM技术,而ADO.NET拥有自己的ADO.NET接口并且基于微软公司的.NET体系框架。众所周知,.NET体系不同于COM体系,ADO.NET接口也完全不同于ADO和OLE DB接口,也就是说,ADO.NET和ADO是两种数据访问方式,ADO.NET不是ADO的.NET版

实现在线操作和离线操作,一般情况下各自都需要用到如下对象。 (1)在线操作:Connection、Command、Parameter(可选)、DataReader(可选)、Transaction(可选)、DataAdapter(可选)。 (2)离线操作:Connection、DataAdapter、DataSet、DataTable、DataRow、DataColumn、DataView(可选)、DataRelation(可选)、Constraint(可选)

4.1.2 ADO.NET的体系结构

4.1.3 应用程序的开发流程 (1)创建数据库。具体方法不在本书中介绍,读者可参考相关书籍。 4.1.3 应用程序的开发流程 ASP.NET通过ADO.NET访问数据库,.NET数据库应用程序的开发流程有以下几个步骤。 (1)创建数据库。具体方法不在本书中介绍,读者可参考相关书籍。 (2)利用Connection对象创建到数据库的连接。 (3)利用Command对象对数据源执行SQL命令并返回结果。 (4)利用DataReader对象读取数据源的数据。DataReader对象只能将数据源从头至尾按顺序读取数据,不能只读取某条数据,也不能写入数据。因此,利用DataReader对象只能完成读取数据的功能,更复杂的功能将由DataSet对象完成。 (5)DataSet对象是ADO.NET的核心,与DataAdapter对象配合,完成数据库操作的增加、删除、修改、更新等操作。

4.2 Connection对象 4.2.1 Connection对象概述

4.2.2 连接字符串 为了连接到数据源,需要一个连接字符串,即Connection对象的ConnectionString属性。连接字符串通常由分号隔开的名称和值组成,它指定数据库运行库的设置。连接字符串中包含的典型信息包括数据库的名称、服务器的位置和用户的身份。还可以指定其他操作的信息,诸如连接超时和连接池设置等。

4.2.3 使用Connection对象连接数据库 1.连接字符串的设置方法 对于SQL Server数据库,可以使用如下两种方式连接数据库,即采用集成的Windows验证和使用SQL Server身份验证进行数据库的登录。 (1)集成的Windows身份验证语法范例。 string connectionString=“server=localhost;database=Northwind;integrated security=SSPI”; (2)采用Sql Server身份验证的语法范例。 string connectionString = "server=localhost; database=Northwind; uid=sa; pwd=frock";

4.2.3 使用Connection对象连接数据库(2) 以SqlConnection为例,可以用SqlConnection构造函数生成一个新的SqlConnection对象。这个函数是重载的,即可以调用构造函数的不同版本。例: SqlConnection mySqlConnection =new SqlConnection(“server=localhost; database=Northwind;uid=sa;pwd= frock”); 通过使用new关键字生成了一个新的SqlConnection对象。因此也可以设置该对象的ConnectionString属性,为其指定一个数据库连接字符串。这和将数据库连接字符串传入SqlConnection()构造函数的功能是一样的。要注意的是,只能在关闭Connection对象时设置ConnectionString属性。

4.2.3 使用Connection对象连接数据库(3) 3.连接字符串的存储 (1)存储在配置文件中。 在ASP.NET 2.0中,使用了一种在运行时解析为连接字符串值的新的声明性表达式语法,按名称引用数据库连接字符串。连接字符串本身存储在 Web.config 文件中的<connectionStrings>配置节下面,以便易于在单个位置为应用程序中的所有页进行维护。 (2)存储在类的方法中。 将数据库连接字符串存放在新建的一个类方法中,如可将此类命名为MySetting

4.2.4 连接池 打开与关闭数据库都是比较耗时的。为此,ADO.NET自动将数据库连接存放在连接池中。连接池可以大幅度提高程序的性能和效率,因为不必等待建立全新的数据库连接过程,而是直接利用现成的数据库连接。注意,利用Close方法关闭连接时,并不是实际关闭连接,而是将连接标为未用,放在连接池中,准备下一次复用。

使用SqlConnection对象时,可以在连接字符串中指定max pool size,表示连接池允许的最大连接数(默认为100),也可以指定min pool size表示连接池允许的最小连接数(默认为0)。下面的代码指定了SqlConnection对象的max pool size为10,min pool size为5。 SqlConnection mySqlConnection = new SqlConnection("server=localhost;database=Northwind; integrated security=SSPI;" + "max pool size=10; min pool size=5"); 在上述范例的程序代码中,程序最初在池中生成5个SqlConnection对象。池中可以存储最多10个SqlConnection对象。

4.3 Command对象 4.3.1 Command对象概述 Command对象继承于.NET框架的IDbCommand接口。Command对象提供对数据库(或数据源)的查询、插入、修改、删除等操作,且它可以使用3种不同方式(即CommandType属性的值)执行数据库的命令 。 (1)Text(文本)类型,为Command对象的系统默认执行方式,它用于执行SQL语句,Command对象不需要进行任何处理就可以把该文本直接传递给数据库并执行。

(2)Stored Procedure(存储过程)类型,用于执行存储过程,存储过程是一种特殊的数据库命令,它把多个命令(如SQL语句)集中起来一次性提交给数据库并执行,因此可以提高数据库的执行效率。 (3)ableDirect类型,执行Command命令时,该类型执行方式返回一个完整的表,等价与Command对象使用Text执行方式执行“Select * from TableName”SQL语句。该类型执行方式只有OLE DB托管提供程序支持。

4.3.2 创建和使用Command对象 (1)不返回记录集的命令。通常是执行添加、插入和修改等操作的SQL语句来更新记录。 一般把对数据库的各种操作分成如下两种。 (1)不返回记录集的命令。通常是执行添加、插入和修改等操作的SQL语句来更新记录。 (2)返回记录集的命令。通常是执行查询SQL语句来获取数据集用于呈现。 不论是那种操作,都需要使用Command对象来执行SQL语句。这里,使用Sql Client Data Provider,所以需要定义SqlCommand对象。SqlCommand对象重载的几个构造方法包括:SqlCommand()、SqlCommand(string cmdText)、SqlCommand(string cmdText, SqlConnection connection)、SqlCommand(string cmdText, SqlConnection connection、 SqlTransaction transaction)。

使用一个Command对象简单来说需要以下步骤。 (1)声明一个有效的Connection对象。 (2)声明一个有效的Command对象。 (3)为Command对象指定SQL语句字符串和关联的Connection对象的实例。 (4)打开Connection对象。 (5)执行Command对象的各种方法执行数据库操作。 (6)关闭Connection对象。

4.4 DataReader对象 4.4.1 DataReader对象概述 可以使用DataReader从数据库中检索只读、只进的数据流。只读是指在数据阅读器DataReader上不可更新、删除、增加记录;只进是指记录的接收是顺序进行且不可后退的。DataReader对象接收到的数据是以数据库的记录为单位的。查询结果在查询执行时返回,并存储在客户端的网络缓冲区中,直到用户使用DataReader的Read方法对它们发出请求。使用DataReader可以提高应用程序的性能,原因是它只要数据可用就立即检索数据,并且默认情况下一次只在内存中存储一行,减少了系统开销。

1.DataReader对象的属性

2.DataReader对象的方法

4.4.2 创建和使用DataReader对象 在创建Command对象的一个实例之后,用户可以通过命令调用Command对象的ExecuteReader方法来创建DataReader对象,该方法从在Command对象中指定的数据源检索一些行,这时,DataReader就会被来自数据库的记录所填充。其创建格式如下(不能直接使用构造函数)。 SqlDataReader ObjReader=ObjCmd.ExecuteReader();

4.5 DataSet和DataAdapter对象 数据集(DataSet)对象是ADO.NET的核心,是实现离线访问技术的载体。数据集相当于内存中暂存的数据库,不仅可以包括多张数据表(DataTable),还可以包括数据表之间的关系和约束。由于DataSet对象是使用无连接传输模式访问数据源,因此,在用户要求访问数据源时,无需经过冗长的连接操作,而且有数据读入DataSet对象之后,便关闭数据连接,解除数据库的锁定,其他用户便可以再使用该数据库,避免了用户之间对数据源的争夺。

使用DataSet对象访问数据库的步骤如下。 (1)使用Connection对象创建数据连接。 (2)使用DataAdapter对象执行SQL命令并返回结果,DataAdapter对象构造在Command对象之上。 (3)使用DataSet对象访问数据库。 DataSet对象的创建方法如下。 DataSet myDS=new DataSet(“scores”);

4.5.2 DataSet对象的基本结构 DataSet对象模型由3个集合组成:Tables、Relations和ExtendedProperties,这3部分组成了DataSet的关系数据结构,如图所示:

4.5.3 DataAdapter对象 ADO.NET提供了两种不同的方式从数据库中检索数据。一种是使用DataReader对象,但DataReader对象检索的是只读的、前向的数据流,不能对数据库中的数据进行增加、删除等操作。另一种方法是DataAdapter对象,DataAdapter对象与DataSet对象配合以创建数据的内存表示。DataReader对象通过一个数据连接来检索数据库中的数据,然后执行SQL命令,搜索要检索的数据,最后关闭数据连接。DataAdapter对象仅仅在需要填充DataSet对象时才使用数据库连接,完成操作之后就释放所有的资源。

4.5.4 使用DataAdapter填充数据集 DataAdapter填充DataSet的过程分为如下两步: (1)通过DataAdapter的SelectCommand属性从数据库中检索出需要的数据。 (2)再通过DataAdapter的Fill方法把检索的数据填充DataSet。

4.5.5 DataSet数据更新 从前面对DataSet对象的介绍中可以知道,每次调用DataAdapter对象的Fill方法都会检索一组新的记录,同时刷新DataSet的内容。但因为DataSet是面向无连接的,如果改变了DataSet的内容,就必须将改动写回数据库。 ADO.NET提供了DataAdapter的Update方法来完成更新数据库的功能。此方法分析DataSet中的每个记录的RowState,并且调用适当的Insert、Update和Delete语句。

代码实例: 演示了插入一条记录的方法。 string ConnString = "server=(local);uid=sa;pwd=frock;database=stu;"; string mySQLstr = "select * from student"; SqlDataAdapter sda = new SqlDataAdapter(mySQLstr, ConnString); SqlCommandBuilder builder = new SqlCommandBuilder(sda); //声明一个SqlCommandBuilder对象,并将其实例化 DataSet ds = new DataSet(); sda.Fill(ds, "student"); DataTable table = ds.Tables["student"]; //插入数据 DataRow row = table.NewRow(); //插入一行 row["id"] = "1008"; row["name"] = "李思"; table.Rows.Add(row); //插入一条记录 sda.Update(table); //更新数据 this.GridView1.DataSource = ds; this.GridView1.DataBind();