版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第10章使用ADO.NET操作数据库《C#程序设计基础入门教程(第3版)》学习目标/Target了解数据库,能够说出数据库的概念与特点。
了解ADO.NET,能够说出ADO.NET的作用与常用类。掌握SQLServer数据库的安装,能够独立完成SQLServer数据库的下载与安装。掌握SQLServer数据库与数据表的创建,能够通过手动方式与SQL语句分别实现数据库与数据表的创建。掌握数据库的访问,能够使用ADO.NET实现数据的增加、删除、修改、查找功能。章节概述/Summary在C#程序中,大部分应用程序都会涉及数据库的操作。数据库操作包括连接数据库,对数据库中的数据进行增加、删除、修改、查找操作,将数据库中的信息显示到窗体中等。本章将对ADO.NET与数据库的操作进行详细讲解。目录/Contents010203认识数据库ADO.NET常用类下载并安装SQLServer数据库目录/Contents040506创建SQLServer数据库创建SQLServer数据表使用ADO.NET访问数据库认识数据库10.110.1认识数据库了解数据库,能够说出数据库的概念与特点。学习目标数据库(Database,DB)是按照数据结构来组织、存储和管理数据的仓库,可将其看作电子化的文件柜,用户可以对文件柜中的数据进行增加、删除、修改、查找等操作。需要注意的是,需要存储的数据不仅包括普通意义上的数字,还包括文字、图像、声音等,即凡是在计算机中用来描述事物的记录都可称作数据。10.1认识数据库10.1认识数据库数据库系统实现了整体数据的结构化,这是数据库的主要特征之一。数据结构化因为数据是面向整体的,所以数据可以被多个用户、多个应用程序共享使用。数据共享数据的独立性包括逻辑独立性和物理独立性。数据独立性强数据的统一管理与控制包括安全管理与控制、完整性管理与控制和并发管理与控制。数据统一管理与控制数据库的基本特点10.1认识数据库Oracle是一个大型数据库,具有良好的兼容性、可移植性和可连接性SQLServerSQLite具有强大、灵活、基于Web的应用程序管理功能,而且界面友好、易于操作,但是它只能在Windows平台上运行,对操作系统的稳定性要求较高。是一个多用户、多线程的小型数据库服务器,存储数据速度较快,适合对数据要求不是很严格的情况。是一个轻量级的数据库,常用于Android应用程序。MySQL随着数据库技术的发展,数据库产品越来越多,常见的数据库有Oracle、SQLServer、MySQL、SQLite等,每种数据库都有其特点。ADO.NET常用类10.210.2ADO.NET常用类了解ADO.NET,能够说出ADO.NET的作用与常用类。学习目标ADO.NET(ActiveXDataObjects.NET)是微软为.NET设计的数据访问技术框架,它提供了一套丰富的组件,用于连接数据库、执行命令以及检索结果。10.2ADO.NET常用类ADO.NET由两个部分组成,分别是数据提供程序(Provider)与数据集(DataSet),这两部分的功能具体介绍如下。1数据提供程序:数据集:用于连接数据库、执行SQL语句、操作数据集。2一个内存驻留的数据结构,类似于小型的、可编程的关系数据库。它可以包含多个表(DataTable)、关系(DataRelation)和约束(Constraint)。10.2ADO.NET常用类在使用ADO.NET对数据库进行操作时,通常会用到5个类,这5个类及其说明如表。类说明Connection用于连接数据库Command通过执行SQL语句操作数据库DataReader用于保存数据库的查询结果,并提供了方法来读取查询结果,在读取查询结果时,使用流读取,只能读取不能修改数据,并且只能向前读取。当与数据库的连接断开时,类对象中的数据会被清除10.2ADO.NET常用类类说明DataSet用于保存数据库的查询结果,并提供了方法来读取查询结果,但DataSet类是内存的一个缓存,它保存的数据可以读取、修改、重复读取。在数据库断开连接的情况下DataSet类中的值依然可以保留DataAdapter数据库与DataSet类之间的桥梁,它可以将数据库查询结果保存到DataSet类对象中,当DataSet中的数据被修改时,DataAdapter类可以将修改后的数据更新到数据库中10.2ADO.NET常用类下载并安装SQLServer数据库10.310.3下载并安装SQLServer数据库掌握SQLServer数据库的安装,能够独立完成SQLServer数据库的下载与安装。学习目标ADO.NET可以操作多种数据库,如SQL
Server、Oracle、MySQL
等。由于SQLServer是微软开发的产品,与.NET框架和VisualStudio开发环境紧密集成,这种集成使得开发人员可以更方便地进行数据库编程,因此在.NET平台下,推荐使用SQLServer数据库。10.3下载并安装SQLServer数据库这里以在Windows10操作系统中安装SQLServer2022为例,介绍SQLServer数据库的下载与安装,具体步骤如下。10.3下载并安装SQLServer数据库打开SQLServer官网,官网首页如图。1.下载SQLServer202210.3下载并安装SQLServer数据库专为开发人员设计,用于开发和测试环境,不能用于商业环境功能有所限制,内存使用上限通常为1GB;处理器使用也有限制,通常是单个处理器或核心下载完成之后,双击下载好的SQL2022-SSEI-Dev.exe安装包,即可开始安装。关于SQLServer的安装步骤,详见本书提供的配套资源。2.安装SQLServer10.3下载并安装SQLServer数据库创建SQLServer数据库10.410.4创建SQLServer数据库掌握SQLServer数据库与数据表的创建,能够通过手动方式与SQL语句分别实现数据库的创建。学习目标创建SQLServer数据库有两种方式,具体介绍如下。10.4创建SQLServer数据库下面以创建一个名为School的数据库为例,演示如何手动创建SQLServer数据库,具体步骤如下。(1)启动SQLServer2022,成功连接服务器后,选中服务器中的“数据库”选项并右击,在弹出的快捷菜单中选择“新建数据库”选项,如图所示。1.手动创建SQLServer数据库10.4创建SQLServer数据库打开新建数据库窗口,如图。1.手动创建SQLServer数据库10.4创建SQLServer数据库(2)在新建数据库窗口中输入数据库的名称School。输入数据库名称后,在“数据库文件”列表框中会自动生成数据库和数据库日志文件的逻辑名称。读者也可以根据自己的喜好进行设置,本书保持默认设置。输入数据库名称后,单击“确定”按钮,即可在服务器中创建一个名为School的数据库,如图。1.手动创建SQLServer数据库10.4创建SQLServer数据库下面以创建一个名为Company的数据库为例,演示如何使用SQL语句创建SQLServer数据库,具体步骤如下。(1)在SQLServer窗口中单击“新建查询”按钮,在窗口的右侧会出现一个空白的页面,供用户编写SQL语句,如图。2.使用SQL语句创建SQLServer数据库10.4创建SQLServer数据库(2)在窗口中编写SQL语句,创建Company数据库,创建数据库的SQL语句如下。2.使用SQL语句创建SQLServer数据库10.4创建SQLServer数据库点击查看(3)编写完SQL语句之后,单击窗口中的按钮,对SQL语句进行语法分析,确保SQL语句语法正确,如图。2.使用SQL语句创建SQLServer数据库10.4创建SQLServer数据库(4)检查无误之后,单击窗口中的按钮,执行编写的SQL语句,创建Company数据库。执行SQL语句后,需要刷新才可以看到数据库。选中“数据库”选项,右击,在弹出的快捷菜单中选择“刷新”选项,创建的Company数据库如图。2.使用SQL语句创建SQLServer数据库10.4创建SQLServer数据库创建SQLServer数据表10.5掌握数据库的访问,能够使用Connection类连接SQLServer数据表。学习目标10.5创建SQLServer数据表创建SQLServer数据表有两种方式,具体介绍如下。10.5创建SQLServer数据表下面以在数据库School中创建一个名为Student的数据表为例,演示如何手动创建SQLServer数据表,具体步骤如下。(1)选中School数据库中的“表”选项,右击,在弹出的快捷菜单中选择“新建”→“表”选项,如所示。1.手动创建SQLServer数据表10.5创建SQLServer数据表(2)在新建表界面中添加4列,列名分别为Id、Name、Age、Sex,这4列的设置具体如下。1.手动创建SQLServer数据表10.5创建SQLServer数据表在SQLServer窗口右侧会显示需要设置的数据表的列名、数据类型以及是否允许Null值,如图。1.手动创建SQLServer数据表10.5创建SQLServer数据表1Id:Name:数据类型设置为int,不允许Null值,即不选择“允许Null值”复选框。2数据类型设置为varchar(50),允许Null值,即选择“允许Null值”复选框。Age:3数据类型设置为int,允许Null值。Sex:4数据类型设置为nchar(10),允许Null值。选中Id列:5在“列属性”的“标识规范”选项组中,将“(是标识)”设置为“是”,双击“(是标识)”即可将其值设置为“是”。“标识种子”的值为1表示Id列的值从1开始:6数据类型设置为nchar(10),允许Null值。数据表设置如图。1.手动创建SQLServer数据表10.5创建SQLServer数据表(3)按Ctrl+S组合键,弹出选择名称对话框,在该对话框中输入表的名称Student,如图。1.手动创建SQLServer数据表10.5创建SQLServer数据表(4)在选择名称对话框中单击“确定”按钮,即可在School数据库中创建一个名为Student的数据表(刷新数据表才能看到该表),如图。1.手动创建SQLServer数据表10.5创建SQLServer数据表下面以在Company数据库中创建一个名为Employee的数据表为例,演示如何使用SQL语句创建SQLServer数据表,具体步骤如下。10.5创建SQLServer数据表2.使用SQL语句创建SQLServer数据表在SQLServer窗口中单击“新建查询”按钮,在显示的空白页面中编写创建表的SQL语句,具体如下所示。2.使用SQL语句创建SQLServer数据表点击查看10.5创建SQLServer数据表编写完SQL语句后,单击窗口中的按钮,对SQL语句进行语法分析,确保SQL语句语法正确,如图。2.使用SQL语句创建SQLServer数据表10.5创建SQLServer数据表单击窗口中的按钮,执行编写的SQL语句,创建表Employee,如图。2.使用SQL语句创建SQLServer数据表10.5创建SQLServer数据表使用ADO.NET访问数据库10.6前面几节讲解了什么是数据库与ADO.NET常用类,以及如何安装数据库的开发工具SQLServer2022,如何创建数据库与数据表,本节讲解如何使用ADO.NET访问数据库。10.6使用ADO.NET访问数据库掌握数据库的访问,能够使用Connection类连接SQLServer数据库。学习目标10.6.1使用Connection类连接SQLServer数据库10.6.1使用Connection类连接SQLServer数据库在ADO.NET中,Connection类是用于与数据库建立连接的组件。根据所访问的数据库类型以及访问方式的不同,ADO.NET提供了不同的Connection类。主要的Connection类有4个,分别是SqlConnection、OracleConnection、OleDbConnection和OdbcConnection。OracleConnectionSqlConnectionOleDbConnectionOdbcConnection使用SqlConnection类连接SQLServer数据库的具体步骤如下。10.6.1使用Connection类连接SQLServer数据库定义连接数据库的字符串是指确定要登录的数据库服务器名称、登录方式、使用的身份信息(如用户名、密码)等,数据库连接字符串的定义格式通常有以下两种。1.定义连接数据库的字符串10.6.1使用Connection类连接SQLServer数据库具体代码server=服务器名称/数据库的实例名;database=数据库名称;其他字段DataSource=服务器名称/数据库实例名;InitialCatalog=数据库名称;其他字段Password=密码第1种第2种定义好连接数据库的字符串之后,使用SqlConnection类连接SQLServer数据库,具体如下。2.使用SqlConnection类的对象连接SQLServer数据库10.6.1使用Connection类连接SQLServer数据库具体代码SqlConnection连接对象名=newSqlConnection(连接数据库的字符串);数据库连接对象.Open();数据库连接对象.Close();第1种:创建SqlConnection类的实例第2步:打开数据库连接第3步:关闭数据库连接除了使用异常处理的方式释放资源外,还可以使用using语句释放资源。2.使用SqlConnection类的对象连接SQLServer数据库10.6.1使用Connection类连接SQLServer数据库具体语法using(SqlConnection连接对象名=newSQLConnection(连接数据库的字符串)){//打开数据库连接
//对数据库进行相关操作的语句}关键字using有两个作用,一个是引用命名空间,另一个是创建非托管资源对象,在对象使用完毕后,自动释放所占用的资源。下面通过一个案例演示如何使用SqlConnection类的对象连接SQLServer数据库。在本案例中,构建图所示的窗体,当单击“连接数据”按钮时,连接数据库,数据库连接成功后,弹出连接成功的对话框。案例具体实现步骤如下。2.使用SqlConnection类的对象连接SQLServer数据库10.6.1使用Connection类连接SQLServer数据库在解决方案Chapter10中创建一个项目名为Connection-Form的Windows窗体应用。1.创建程序10.6.1使用Connection类连接SQLServer数据库将窗体Form1的名称修改为ConnectionForm.cs,将该窗体的Text属性的值设置为“连接数据库”。在窗体中添加一个Button控件,将该控件的Name属性的值设置为btn_conn,Text属性的值设置为“连接数据”。2.添加窗体控件10.6.1使用Connection类连接SQLServer数据库要在.NET8项目中使用Microsoft.Data.SqlClient命名空间中的SqlConnection类,需要先安装Microsoft.Data.SqlClient包。10.6.1使用Connection类连接SQLServer数据库3.安装Microsoft.Data.SqlClient包在VisualStudio2022菜单栏中选择“工具”→“NuGet包管理器”→“管理解决方案的NuGet程序包”选项,如图所示。10.6.1使用Connection类连接SQLServer数据库3.安装Microsoft.Data.SqlClient包进入NuGet解决方案界面,该界面用于管理各种依赖包。在NuGet解决方案界面的搜索框中搜索Microsoft.Data.SqlClient,在下方提供的依赖包中选择符合需求的Microsoft.Data.SqlClient依赖包,在右侧项目列表中选择需要安装该依赖包的项目,然后单击“安装”按钮进行安装,如图。3.安装Microsoft.Data.SqlClient包10.6.1使用Connection类连接SQLServer数据库设置“连接数据”按钮的单击事件,在该单击事件的方法btn_conn_Click()中使用SqlConnection类的对象连接SQLServer数据库。具体代码如例。4.连接SQLServer数据库10.6.1使用Connection类连接SQLServer数据库点击查看运行ConnectionForm项目,运行成功后,单击连接数据库窗体中的“连接数据”按钮,弹出数据库连接成功的对话框,说明连接数据库成功,如图。5.运行效果10.6.1使用Connection类连接SQLServer数据库掌握数据库的访问,能够使用Command类操作数据库。学习目标10.6.2使用Command类操作数据库当连接数据库成功之后,需要对数据库中的数据进行操作,此时需要使用Command类提供的属性和方法来操作数据库。同样,针对SQLServer数据库,ADO.NET提供的Command类为SqlCommand类,命名空间为Microsoft.Data.SqlClient。10.6.2使用Command类操作数据库使用SqlCommand类来操作数据库中的数据,具体步骤如下。10.6.2使用Command类操作数据库创建SqlCommand类的实例有两种方式,具体如下。1.创建SqlCommand类的实例10.6.2使用Command类操作数据库1通过设置命令类型为Text来创建,这种方式用于执行SQL语句。2通过设置命令类型为StoredProcedure来创建,这种方式用于执行存储过程。创建实例的具体语法如下。1.创建SqlCommand类的实例10.6.2使用Command类操作数据库语法格式SqlCommandSqlCommand类的实例名=newSqlCommand(SQL语句,数据库连接类的实例);SqlCommandSqlCommand类的实例名=newSqlCommand(存储过程名称,数据库连接类的实例);第2种方式:通过设置命令类型为StoredProcedure来创建SqlCommand类的实例第1种方式:通过设置命令类型为Text来创建SqlCommand类的实例为存储过程添加参数需要调用Parameters属性,具体语法如下所示。1.创建SqlCommand类的实例10.6.2使用Command类操作数据库具体语法SqlCommand类实例.Parameters.Add(参数名,参数值);参数名与存储过程中定义的参数名要一致。使用SqlCommand类操作数据表中的数据有以下两种类型。2.使用SqlCommand类操作数据库10.6.2使用Command类操作数据库1执行非查询SQL语句的操作,即增加、修改、删除操作。2执行查询SQL语句的操作。具体语法格式如下所示。10.6.2使用Command类操作数据库语法格式SqlCommand类的实例.ExecuteNonQuery();SqlDataReaderdr=SqlCommand类的实例.ExecuteReader();intvalue=SqlCommand类的实例.ExecuteScalar();第2种:执行查询SQL语句第1种:执行非查询SQL语句2.使用SqlCommand类操作数据库下面通过一个案例演示如何使用SqlCommand类操作数据库。在本案例中,构建下图所示的用户注册界面,当用户输入用户名和密码,并单击“注册”按钮时,将用户名和密码信息添加到数据库的用户信息表Userinfo中。案例具体实现步骤如下所示。10.6.2使用Command类操作数据库2.使用SqlCommand类操作数据库在解决方案Chapter10中创建一个项目名为RegistrationForm的Windows窗体应用。1.创建程序10.6.2使用Command类操作数据库将窗体Form1.cs的名称修改为RegistrationForm.cs,将该窗体的Text属性的值设置为“注册”。10.6.2使用Command类操作数据库2.添加窗体控件(1)添加两个Label控件在窗体中添加两个Label控件,分别用于显示用户名和密码的文本信息,将这两个控件的Text属性的值分别设置为“用户名:”和“密码:”。10.6.2使用Command类操作数据库2.添加窗体控件(2)添加两个TextBox控件在窗体中添加两个TextBox控件,分别用于显示用户名与密码的输入框,将这两个控件的Name属性的值分别设置为tbName和tbPwd,将与密码对应的TextBox控件的PasswordChar属性的值设置为“*”。10.6.2使用Command类操作数据库2.添加窗体控件(3)添加一个Button控件在窗体中添加一个Button控件,用于显示“注册”按钮,将该控件的Name属性的值设置为btnRegister,Text属性的值设置为“注册”。10.6.2使用Command类操作数据库2.添加窗体控件在RegistrationForm项目中安装Microsoft.Data.SqlClient包。安装完成之后,在SQLServer窗口中单击“新建查询”按钮,在窗口右侧的空白页面中编写创建表Userinfo的SQL语句,这个表创建在数据库School中。创建表Userinfo的SQL语句如下所示。3.创建数据表Userinfo10.6.2使用Command类操作数据库SQL语句useSchool go createtableUserinfo( idintidentity(1,1)primarykey, namevarchar(20), passwordvarchar(20) )在RegistrationForm窗体的设计界面设置“注册”按钮的单击事件,程序会进入“注册”按钮单击事件相应的方法btnRegister_Click()中。在该方法中使用SqlConnection类的对象连接SQLServer中的School数据库,并将注册信息保存到数据表Userinfo中,具体代码如例。4.实现注册功能10.6.2使用Command类操作数据库点击查看运行RegistrationForm项目,输入用户名itcast,密码123456,单击窗体中的“注册”按钮,弹出提示注册成功的对话框,如图。5.运行结果10.6.2使用Command类操作数据库注册成功后,查看数据库School的表Userinfo中的数据。在SQLServer窗口中单击“新建查询”按钮,在窗口右侧的空白页面中编写SQL语句来查询表Userinfo中的数据,SQL语句如下所示。5.运行结果10.6.2使用Command类操作数据库SQL语句Select*fromUserinfo注册成功后,查看数据库School的表Userinfo中的数据。编写完SQL语句之后,单击“执行”按钮执行SQL语句,查询结果会在查询语句下方的结果表格中显示,如图。5.运行结果10.6.2使用Command类操作数据库掌握数据库的访问,能够使用DataReader类查询数据库。学习目标10.6.3使用DataReader类查询数据库在C#程序中,如果想要查询数据表中的数据,需要使用DataReader类来实现,该类一般与Command类中的ExecuteReader()方法一起使用。DataReader类主要用于读取表中的查询结果,并且以只读的方式读取,即不能修改DataReader类中存放的数据。由于DataReader类的特殊读取方式,该类访问数据的速度比较快,并且占用的服务器资源比较少。10.6.3使用DataReader类查询数据库在Microsoft.Data.SqlClient命名空间中,访问SQLServer数据库时,DataReader类对应的类名是SqlDataReader。使用SqlDataReader类读取查询结果的具体步骤如下。SQL语句SqlDataReaderdr=SqlCommand类的实例.ExecuteReader();dr.Read();dr.Close();10.6.3使用DataReader类查询数据库第1步:执行SqlCommand对象中的ExecuteReader()方法第3步:关闭SqlDataReader对象第2步:遍历SqlDataReader对象中的数据下面通过一个案例演示如何使用SqlDataReader类读取数据。在本案例中,构建图所示的查询数据界面,根据输入的用户名从School数据库的Userinfo数据表中查询对应的用户编号和密码,将其显示在下方的Label控件中。案例的具体实现步骤如下。10.6.3使用DataReader类查询数据库在解决方案Chapter10中创建一个名为QueryUserinfoForm的Windows窗体应用。1.创建程序10.6.3使用DataReader类查询数据库将窗体Form1.cs的名称修改为QueryForm.cs,将该窗体的Text属性的值设置为“查询数据”。2.添加窗体控件10.6.3使用DataReader类查询数据库(1)添加两个Label控件在窗体中添加两个Label控件,分别用于显示用户名和密码的文本信息,将这两个控件的Text属性的值分别设置为“用户名:”和“密码:”。2.添加窗体控件10.6.3使用DataReader类查询数据库(2)添加一个TextBox控件在窗体中添加一个TextBox控件,用于显示用户名的输入框,将该控件的Name属性的值设置为tbName。2.添加窗体控件10.6.3使用DataReader类查询数据库(3)添加一个Button控件在窗体中添加一个Button控件,用于显示“查询”按钮,将该控件的Name属性的值设置为btnQuery,Text属性的值设置为“查询”。2.添加窗体控件10.6.3使用DataReader类查询数据库在QueryUserinfoForm项目中安装Microsoft.Data.SqlClient包。安装完成之后,在QueryForm窗体的设计界面设置“查询”按钮的单击事件,进入QueryForm.cs文件的btnQuery_Click()方法中。在该方法中使用SqlDataReader类查询输入的用户名对应的用户编号和密码信息,具体代码如例。3.添加一个Button控件点击查看10.6.3使用DataReader类查询数据库运行QueryUserinfoForm项目,在输入框中输入用户名itcast,单击“查询”按钮,查询结果如图。3.添加一个Button控件10.6.3使用DataReader类查询数据库输入用户名itcast,查询的结果为“用户编号:1”“密码:123456”。掌握数据库的访问,能够使用DataAdapter类与DataSet类查询数据库。学习目标10.6.4使用DataAdapter类与DataSet类查询数据库DataAdapter类和DataSet类在数据库操作中使用非常频繁,下面分别对这两个类进行介绍。10.6.4使用DataAdapter类与DataSet类查询数据库DataSet类定义在System.Data命名空间中,用于存储从数据库中查询到的数据,它在内存中以一种类似于关系数据库的方式存储数据。DataSet类由多个DataTable类对象组成,每个DataTable对象代表一个数据表,DataSet类提供了Tables属性用于获取所有的数据表集合。数据表由行和列组成。DataTable类提供了Columns属性和Rows属性,分别用于获取数据表的列集合和行集合。1.DataSet类10.6.4使用DataAdapter类与DataSet类查询数据库通过数据表的行和列,可以获取具体的数据,例如,获取DataSet类对象中第1个数据表中的第1行数据。示例代码dataSet.Tables[0].Rows[0];10.6.4使用DataAdapter类与DataSet类查询数据库dataSet.Tables[0]表示第1个数据表,dataSet.Tables[0].Rows[0]表示第1个数据表中的第1行数据。1.DataSet类在Microsoft.Data.SqlClient命名空间中,DataAdapter类对应的类名为SqlDataAdapter,它的内部装封装了SqlCommand类,可以通过执行SQL语句来操作数据库,并将操作数据库获得的结果存储在DataSet类对象中。1.DataSet类10.6.4使用DataAdapter类与DataSet类查询数据库当DataSet类对象中保存的数据被更改时,SqlDataAdapter类可以将更改后的数据更新到数据库,因此,SqlDataAdapter类是DataSet类和数据库之间的桥梁。为了更好地传输数据,SqlDataAdapter类提供了一系列方法,常用方法如表。方法说明intFill(DataSetdataSet)将数据库返回的结果填充到DataSet类对象中,默认填充到DataSet类对象的第一个数据表中intFill(DataSetdataSet,stringtableName)将数据库返回的结果填充到DataSet类对象的数据表中,数据表的名称为tableNameintUpdate(DataSetdateSet)将DataSet类对象中的数据更新到数据库10.6.4使用DataAdapter类与DataSet类查询数据库1.DataSet类使用SqlAdapterReader类的对象与DataSet类的对象查询数据库的具体步骤如下。10.6.4使用DataAdapter类与DataSet类查询数据库1.DataSet类示例代码SqlDataAdaptersda=newSqlDataAdapter(SQL语句,数据库连接类的实例);DataSetds=newDataSet();sda.Fill(ds);第1步:创建SqlDataAdapter类的对象第2步:创建DataSet类的对象第3步:使用SqlDataAdapter类的对象sda将查询结果填充到Dataset类的对象ds中下面通过一个案例演示如何使用SqlDataAdapter类和DataSet类查询数据库。在本案例中,构建下图所示的查询用户名界面,单击“查询全部”按钮时,从School数据库的Userinfo数据表中查询所有的用户名,并将所有的用户名显示在下方的ListBox控件中。10.6.4使用DataAdapter类与DataSet类查询数据库案例具体实现步骤如下。10.6.4使用DataAdapter类与DataSet类查询数据库在解决方案Chapter10中创建一个名为QueryAllNameForm的Windows窗体应用。1.创建程序10.6.4使用DataAdapter类与DataSet类查询数据库将窗体Form1.cs的名称修改为QueryAllNameForm.cs,将该窗体的Text属性的值设置为“查询用户名”。2.添加窗体控件10.6.4使用DataAdapter类与DataSet类查询数据库(1)添加一个Button控件在窗体中添加一个Button控件,用于显示“查询全部”按钮,将该控件的Name属性的值设置为btnQueryAll,Text属性的值设置为“查询全部”。2.添加窗体控件10.6.4使用DataAdapter类与DataSet类查询数据库(2)添加一个ListBox控件在窗体中添加一个ListBox控件,用于显示查询出的所有用户名,将该控件的Name属性的值设置为lbList。2.添加窗体控件10.6.4使用DataAdapter类与DataSet类查询数据库在SQLServer数据库中选择School数据库下的Userinfo数据表,右击,在弹出的快捷菜单中选择“编辑前200行”选项,如图。3.在Userinfo数据表中添加数据10.6.4使用DataAdapter类与DataSet类查询数据库窗口右侧会显示Userinfo数据表,在其中逐行添加数据即可,添加完成之后Userinfo数据表如图。3.在Userinfo数据表中添加数据10.6.4使用DataAdapter类与DataSet类查询数据库在QueryAllNameForm项目中安装Microsoft.Data.SqlClient包。安装完成之后,在QueryAllNameForm窗体的设计界面设置“查询全部”按钮的单击事件,进入相应的btnQueryAll_Click()方法中,在该方法中使用DataSet类与DataAdapter类查询全部用户名信息,具体代码如例。点击查看10.6.4使用DataAdapter类与DataSet类查询数据库4.实现查询全部用户名的功能运行QueryAllNameForm项目,运行成功后,单击“查询全部”按钮,查询到的全部用户名信息会显示在窗体界面上,结果如图。10.6.4使用DataAdapter类与DataSet类查询数据库4.实现查询全部用户名的功能掌握数据库的访问,能够使用DataAdapter类与DataSet类更新数据库。学习目标10.6.5使用DataAdapter类与DataSet类更新数据库除了查询数据库,SqlDataAdapter类和DataSet类在数据库的更新、插入、删除操作中也非常常用。使用SqlDataAdapter类和DataSet类执行数据库的更新、插入、删除操作的大致步骤如下。10.6.5使用DataAdapter类与DataSet类更新数据库在DataSet类对象中找到需要修改的数据表,通过行、列定位并修改数据表中指定的数据。可以在数据表中添加新的行,还可以从数据表中删除相应的行。1.在DataSet对象中修改指定数据表的行、列数据10.6.5使用DataAdapter类与DataSet类更新数据库以School数据库中的Userinfo数据表为例,假设查询出的所有记录存储在DataSet类对象ds中名称为Userinfo的数据表中,则执行插入操作时,首先在Userinfo数据表中插入一个新行。示例代码DataRownewRow=ds.Tables["Userinfo"].NewRow();newRow["name"]="燕燕"; newRow["password"]="yan123"; ds.Tables["Userinfo"].Rows.Add(newRow);调用NewRow()方法创建一个新行newRow10.6.5使用DataAdapter类与DataSet类更新数据库1.在DataSet对象中修改指定数据表的行、列数据将新行的name属性值设置为“燕燕”将新行的password属性值设置为“yan123”调用数据表的Rows属性的Add()方法添加新行在执行删除操作时,调用数据表的Rows属性的Delete()方法删除指定行即可。示例代码ds.Tables["Userinfo"].Rows[0].Delete();10.6.5使用DataAdapter类与DataSet类更新数据库1.在DataSet对象中修改指定数据表的行、列数据删除Userinfo数据表的第1行(Rows[0])。SqlCommandBuilder类的作用是根据SqlDataAdapter执行的SQL查询语句,以及DataSet对象中对数据的修改,自动生成相应的插入语句、更新语句和删除语句。10.6.5使用DataAdapter类与DataSet类更新数据库2.创建SqlCommandBuilder对象自动生成SQL语句在创建SqlCommandBuilder类对象时,以SqlDataAdapter类对象为参数,表示生成的SQL语句是针对SqlDataAdapter操作的数据表。示例代码SqlCommandBuilderscb=newSqlCommandBuilder(sda);10.6.5使用DataAdapter类与DataSet类更新数据库2.创建SqlCommandBuilder对象自动生成SQL语句修改完DataSet类中的数据,并且使用SqlCommandBuilder类自动生成SQL语句后,可以调用SqlDataAdapter类的Update()方法将对DataSet类对象的更改同步到数据库。调用Update()方法,就是执行SqlCommandBuilder类自动生成的SQL语句,完成数据库操作。10.6.5使用DataAdapter类与DataSet类更新数据库3.调用SqlDataAdapter类的Update()方法操作数据库下面通过一个案例演示如何使用SqlDataAdapter类和DataSet类实现数据库的更新。在本案例中,构建下图所示的重置密码界面。在“用户名”输入框中输入用户名,并单击“查询密码”按钮后,从School数据库的Userinfo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年毒品禁毒知识测试题(易错题)
- 拼搏为主题的英文演讲稿
- 逃离倦怠演讲稿学生作品
- 发扬革命红色精神演讲稿
- 金融业合规管理与操作手册
- 【北师大版】初中生物学八年级上册 期末评估测试卷一(解析版)
- 《林海雪原》基础信息(速记清单)解析版-2025-2026学年六年级语文下册整本书阅读(统编版五四学制)
- 2026届河南省信阳市高级中学贤岭校区高三上学期2月期末测试历史试题(含答案)
- 甘肃警察职业学院《After Effects 特效制作》2024 - 2025 学年第一学期期末试卷
- 9.3 溶质的质量分数 第2课时 表格式教学设计(人教版九年级下册化学)
- 2026年永州职业技术学院单招职业技能测试题库必考题
- 2025-2026学年高二化学上学期第一次月考卷一(人教版)含答案解析
- 【10篇】新部编人教版小学语文六年级下册【课内外阅读理解专项训练(完整)】及答案+作文习作
- TCFPA 034-2024 海上油田消防物联网基本框架要求
- 2026年湖南高速铁路职业技术学院单招职业技能测试必刷测试卷附答案
- 高效执行四原则培训
- 电力与算力协同发展专委会:2025年电力与算力协同发展蓝皮书
- (2025年)(焊工)考试题库及焊工证模拟考试(含答案)
- 2025 年高职城市轨道交通机电技术(实训考核)技能测试卷
- 黄酒代理销售合同范本
- 护士精神科面试题库答案
评论
0/150
提交评论