ADONET数据访问技术.ppt
《ADONET数据访问技术.ppt》由会员分享,可在线阅读,更多相关《ADONET数据访问技术.ppt(166页珍藏版)》请在三一办公上搜索。
1、第9章 ADO.NET数据访问技术,ActiveX Data Objects(ADO)是Microsoft开发的面向对象的数据访问库,目前已经得到了广泛的应用。而ADO.NET则是ADO的后续技术。但ADO.NET并不是ADO的简单升级,而是有非常大的改进。利用ADO.NET,程序员可以非常简单而快速地访问各种数据库,如SQL Server数据库。,9.1 数据库概述,9.1.1 关系数据库的基本结构1.表2.记录3.字段4.关系5.索引6.视图7.存储过程,表9.1 学生情况表student,表9.2 学生成绩表score,Stud 数据库中有以下两个表:,9.1.2 SQL Server
2、2005数据库管理系统SQL Server 2005是微软公司在SQL Server 2000基础上推出的关系数据库管理系统,是目前主流的数据库管理系统之一。,SQL Server2005版本:SQL Server 2005 Enterprise Edition(X86/X64)企业版SQL Server 2005 Standard Edition(X86/X64)标准版SQL Server 2005 Workgroup Edition(X86)工作组版SQL Server 2005 Developer Edition(X86/X64)开发版SQL Server 2005 Express Ed
3、ition(X86)学习版,SQL Server 7 SQL Server 2000 SQL Server 2005 SQL Server 2008 SQL Server 2012,1.建立数据库Stud在安装并进入SQL Server 2005系统后(这里的登录名为sa,密码为123456),通过右击“数据库”项,在出现的快捷菜单中选择“新建数据库”命令,建立一个名称为Stud的数据库,将其路径改为Myaspnet网站的App_Data文件夹中(完整路径为C:ASPNET示例ASPNETApp_Data文件夹),这样自动建立Stud.mdf和Stud_log.ldf两个文件,前者为数据库主文
4、件,后者是日志文件。,2.建立数据表student和score再展开Stud数据库,右击下方的“表”项,在出现的快捷菜单中选择“新建表”命令,可以通过交互建立表结构。这里新建student和score两个表,前者的关键字为“学号”,后者的关键字为“学号+课程名”,它们的表结构分别如图9.1和9.2所示。这样在Stud数据库的表项下方出现db.student和dbo.score两个表项,选中student表,右击鼠标,在出现的快捷菜单中选择“打开表”,可以输入表记录。在student和score表中输入的记录分别如图9.3和9.4所示(分别对应表9.1和表9.2中的记录)。本章后面的例子使用这些
5、样本数据介绍数据库编程方法。,图9.1 student表结构,图9.2 score表结构,图9.3 student表记录,图9.4 score表记录,3.权限设置为了在网页中访问Stud数据库,必须给Stud数据库设置一些访问权限,否则在网页运行时出现以下错误:无法打开登录所请求的数据库Stud。登录失败。用户LCB-PCASPNET登录失败。,为了简单,给Stud数据库设置一些公共用户访问权限,其操作如下:(1)右击数据库项下的“Stud”项,在出现的快捷菜单中选择“属性”命令,在出现的“数据库属性Stud”对话框中单击“选项页”中的“权限”项,此时全为空白项,说明没有授予任何权限。(2)单
6、击“添加”命令按钮,在出现的“选择用户或角色”对话框中单击“浏览”命令按钮。(3)在出现的对话框中勾选“public”项,返回到“数据库属性Stud”对话框。,(4)通过勾选“public的显式权限”列表中的Delete、Insert、Select、Update的授予项以授予相应权限。如图9.5所示。,9.1.3 结构化查询语言(SQL)1.SQL语言的组成SQL语言包含查询、操纵、定义和控制等几个部分。它们都是通过命令动词分开的,各种语句类型对应的命令动词如下:数据查询的命令动词为SELECT。数据定义的命令动词为CREATE、DROP。数据操纵的命令动词为INSERT、UPDATE、DEL
7、ETE。数据控制的命令动词为GRANT、REVOKE。,2.数据定义语言(1)CREATE语句CREATE语句用于建立数据表,其基本格式如下:CREATE TABLE 表名(列名1数据类型1 NOT NULL,列名2数据类型2 NOT NULL)(2)DROP语句DROP语句用于删除数据表,其基本格式如下:DROP TABLE 表名,3.数据操纵语言(1)INSERT语句 INSERT语句用于在一个表中添加新记录,然后给新记录的字段赋值。其基本格式如下:INSERT INTO 表名(列名1,列名2,)VALUES(表达式1,表达式2,),(2)UPDATE语句UPDATE语句用于新的值更新表中
8、的记录。其基本格式如下:UPDATE 表名 SET 列名1=表达式1,SET 列名2=表达式2WHERE 条件表达式(3)DELETE语句DELETE语句用于删除记录,其基本格式如下:DELETE FROM 表名WHERE 条件表达式,4.数据查询语句SQL的数据查询语句是使用很频繁的语句。SELECT的基本格式如下:SELECT 字段表FORM 表名WHERE 查询条件GROUP BY 分组字段HAVING 分组条件ORDER BY 字段ASC|DESC各子句的功能如下:SELECT:指定要查询的内容。FORM:指定从其中选定记录的表名。WHERE:指定所选记录必须满足的条件。GROUP B
9、Y:把选定的记录分成特定的组。HAVING:说明每个组需要满足的条件。ORDER BY:按特定的次序将记录排序。,【例9.4】查询student表中“09002”班所有学生记录。,SELECT*FROM student WHERE 班号=09002,SELECT student.学号,student.姓名,score.课程名,score.分数FROM student,scoreWHERE student.学号=score.学号ORDER BY score.课程名,【例9.6】查询所有学生的学号、姓名、课程名和分数,要求按课程名排序。,【例9.7】查询分数在8090之间的所有学生的学号、姓名、课
10、程名和分数。,SELECT student.学号,student.姓名,score.课程名,score.分数FROM student,scoreWHERE student.学号=score.学号 AND score.分数 BETWEEN 80 AND 90,【例9.8】查询每个班每门课程的平均分。,SELECT student.班号,score.课程名,AVG(score.分数)AS 平均分FROM student,scoreWHERE student.学号=score.学号GROUP BY student.班号,score.课程名,【例9.9】查询最高分的学生姓名和班号。,SELECT st
11、udent.姓名,student.班号FROM student,scoreWHERE student.学号=score.学号 AND score.分数=(SELECT MAX(分数)FROM score),9.2 ADO.NET模型ADO.NET简介 ADO.NET是在.NET Framework上访问数据库的一组类库,它利用.NET Data Provider(数据提供程序)以进行数据库的连接与访问。通过ADO.NET,数据库程序设计人员能够很轻易地使用各种对象来访问符合自己需求的数据库内容。,9.2.2 ADO.NET体系结构,【说明】ADO.NET是在.NET Framework上访问数
12、据库的一组类库。ADO.NET将数据库中的数据将通过DataAdapter对象,以XML的格式传送到客户端的DataSet对象中,实现数据库的离线操作。DataSet对象被称为“内存数据库”,具有DBMS的主要功能。(如:DataSet对象中含有DataTable对象、DataTable又含有DataRow、DataColum对象)客户端对数据的操作都是在本地DataSet对象中完成的。最后,再通过DataAdapter对象“回写”到数据库中。ADO.NET也提供“快捷、简单”的数据读取方法。如:通过,DataReader对象实现针对查询结果的只读操作。,1.NET Data Provider
13、.NET Data Provider是指访问数据源的一组类库,主要是为了统一对于各类型数据源的访问方式而设计的一套高效能的类库。下表给出了.NET Data Provider中包含的4个对象。,在.NET Framework中常用的有如下4组数据提供程序:(1)SQL.NET Data Provider(2)OLEDB.NET Data Provider(3)ODBC.NET Data Provider(4)ORACLE.NET Data Provider用于访问不同类型的数据库资源。,【注意】如果采用SQL.NET Data Provider访问SQL Server数据源,则相应的ADO.N
14、ET对象名称之前都要加上“SQL”。如:SqlConnection、SqlCommand、SqlDataAdapter、SqlDataReader。,2.DataSetDataSet(数据集)是ADO.NET离线数据访问模型中的核心对象,主要使用时机是在内存中暂存并处理各种从数据源中所取回的数据。DataSet其实就是一个存放在内存中的数据暂存区,这些数据必须通过DataAdapter对象与数据库进行数据交换。在DataSet内部允许同时存放一个或多个不同的数据表(DataTable)对象。这些数据表是由数据列和数据域所组成的,并包含有主索引键、外部索引键、数据表间的关系(Relation)信
15、息以及数据格式的条件限制(Constraint)。,9.2.3 ADO.NET数据库的访问流程ADO.NET数据库访问的一般流程如下:(1)建立Connection对象,创建一个数据库连接。(2)在建立连接的基础上可以使用Command对象对数据库发送查询、新增、修改和删除等命令。(3)创建DataAdapter对象,从数据库中取得数据。(4)创建DataSet对象,将DataAdapter对象填充到DataSet对象(数据集)中。(5)如果需要,可以重复操作,一个DataSet对象可以容纳多个数据集合。(6)关闭数据库连接。(7)在DataSet上进行所需要的操作。若数据集的数据要输出到窗体
16、中或者网页上,则可将DataSet绑定道数据控件上。,9.3 ADO.NET的数据访问对象9.3.1 SqlConnection对象 在数据访问中首先必须是建立数据库的物理连接。.NET Data Provider使用SqlConnection类的对象建立与SQLServer数据库的物理连接。,1.SqlConnection类,2.建立连接字符串ConnectionString建立连接字符串的方式是:先创建一个SqlConnection对象,将其ConnectionString属性设置为如下值:,Data Source=localhost;Initial Catalog=Stud;Integr
17、ated Security=False;User Id=sa;Password=123456,【注】:另外一种ConnectionString格式:“server=(local);database=Stud;user=sa;password=123456,ConnectionString中的常用的关键字值有效名称如下:,Data Source(或Server或Address):要连接的SQL Server实例的服务器名称或网络地址。Initial Catalog(或Database):数据库的名称。Integrated Security(或Trusted_Connection):为False(
18、默认值)时,将在连接中指定用户ID和密码。为True时,将使用当前的Windows帐户凭据进行身份验证。可识别的值为True、False、yes、no以及与True 等效的sspi(强烈推荐)。,ConnectionString中的常用的关键字值有效名称如下:,Persist Security Info:为False(默认值)或no(强烈推荐)时,如果连接是打开的或者一直处于打开状态,那么安全敏感信息(如密码)将不会作为连接的一部分返回。重置连接字符串将重置包括密码在内的所有连接字符串值。可识别的值为True、False、yes和no。User ID:SQL Server登录帐户。Passwo
19、rd(或Pwd):SQL Server帐户登录的密码。,在指定连接字符串后,就可使用Open方法打开连接。,【例9.10】设计一个说明直接建立连接字符串的连接过程的网页WebForm9-1.aspx。其设计步骤如下:(1)在Myaspnet网站的ch9文件夹中添加一个名称为WebForm9-1的空网页。(2)其设计界面如下图所示,其中包含一个Button控件Button1和一个标签Label1,将该网页的StyleSheetTheme属性设置为Blue。,在该网页上设计如下事件过程:protected void Button1_Click(object sender,EventArgs e)s
20、tring mystr;SqlConnection myconn=new SqlConnection();mystr=Data Source=localhost;Initial Catalog=Stud;+Integrated Security=False;User Id=sa;Password=123456;myconn.ConnectionString=mystr;myconn.Open();if(myconn.State=ConnectionState.Open)Label1.Text=成功连接到SQL Server数据库;elseLabel1.Text=不能连接到SQL Server数
21、据库;myconn.Close();,3.将连接字符串存放在Web.config文件中可以在Web.config文件中保存用于连接数据库的连接字符串,再通过对Web.config文件加密,从而达到保护连接字符串的目的。例如,在节中插入以下代码:,这样,以下代码自动获取Web.config文件中的连接字符串myconnstring:,string mystr=ConfigurationManager.ConnectionStringsmyconnstring.ToString();SqlConnection myconn=new SqlConnection();myconn.Connection
22、String=mystr;myconn.Open();,也可以在Web.config文件的节中插入以下代码:,这样,以下代码自动获取Web.config文件中的连接字符串myconnstring:,string mystr=ConfigurationManager.AppSettingsmyconnstring;SqlConnection myconn=new SqlConnection();myconn.ConnectionString=mystr;myconn.Open();,9.3.2 SqlCommand 对象 建立数据连接之后,就可以执行数据访问操作和数据操纵操作了。一般对数据库的操
23、作被概括为CRUDCreate、Read、Update和Delete。在ADO.NET中定义SqlCommand 类去执行这些操作。,1.SqlCommand 类的属性和方法,2.创建SqlCommand 对象SqlCommand 类的主要构造函数如下:SqlCommand();SqlCommand(cmdText);SqlCommand(cmdText,connection);其中,cmdText参数指定查询命令的文本。connection参数是一个SqlConnection,它表示到SQL Server数据库的连接。,例如,以下语句创建一个SqlCommand 对象mycmd:SqlCon
24、nection myconn=new SqlConnection();mystr=Data Source=localhost;Initial Catalog=Stud;+Integrated Security=False;User Id=sa;Password=123456;myconn.ConnectionString=mystr;myconn.Open();SqlCommand mycmd=new SqlCommand(SELECT*FROM student,myconn);,3.通过SqlCommand 对象返回单个值在SqlCommand 的方法中,ExecuteScalar方法执行返
25、回单个值的SQL命令。例如,如果想获取Student数据表中学生的总人数,则可以使用这个方法执行SQL查询:SELECT Count(*)FROM student,【例9.11】设计一个通过SqlCommand 对象求score表中的平均分的网页WebForm9-2.aspx。解:其设计步骤如下:(1)在Myaspnet网站的ch9文件夹中添加一个名称为WebForm9-2的空网页。(2)其设计界面如下图所示,其中包含一个HTML标签、一个文本框TextBox1和一个Button控件Button1,将该网页的StyleSheetTheme属性设置为Blue。,在该网页上设计如下事件过程:,pr
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ADONET 数据 访问 技术
链接地址:https://www.31ppt.com/p-5414767.html