




免费预览已结束,剩余161页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第9章ADO.NET数据访问技术,ActiveXDataObjects(ADO)是Microsoft开发的面向对象的数据访问库,目前已经得到了广泛的应用。而ADO.NET则是ADO的后续技术。但ADO.NET并不是ADO的简单升级,而是有非常大的改进。利用ADO.NET,程序员可以非常简单而快速地访问各种数据库,如SQLServer数据库。,9.1数据库概述,9.1.1关系数据库的基本结构1.表2.记录3.字段4.关系5.索引6.视图7.存储过程,表9.1学生情况表student,表9.2学生成绩表score,Stud数据库中有以下两个表:,9.1.2SQLServer2005数据库管理系统SQLServer2005是微软公司在SQLServer2000基础上推出的关系数据库管理系统,是目前主流的数据库管理系统之一。,SQLServer2005版本:SQLServer2005EnterpriseEdition(X86/X64)企业版SQLServer2005StandardEdition(X86/X64)标准版SQLServer2005WorkgroupEdition(X86)工作组版SQLServer2005DeveloperEdition(X86/X64)开发版SQLServer2005ExpressEdition(X86)学习版,SQLServer7SQLServer2000SQLServer2005SQLServer2008SQLServer2012,1.建立数据库Stud在安装并进入SQLServer2005系统后(这里的登录名为sa,密码为123456),通过右击“数据库”项,在出现的快捷菜单中选择“新建数据库”命令,建立一个名称为Stud的数据库,将其路径改为Myaspnet网站的App_Data文件夹中(完整路径为C:ASPNET示例ASPNETApp_Data文件夹),这样自动建立Stud.mdf和Stud_log.ldf两个文件,前者为数据库主文件,后者是日志文件。,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中的记录)。本章后面的例子使用这些样本数据介绍数据库编程方法。,图9.1student表结构,图9.2score表结构,图9.3student表记录,图9.4score表记录,3.权限设置为了在网页中访问Stud数据库,必须给Stud数据库设置一些访问权限,否则在网页运行时出现以下错误:无法打开登录所请求的数据库Stud。登录失败。用户LCB-PCASPNET登录失败。,为了简单,给Stud数据库设置一些公共用户访问权限,其操作如下:(1)右击数据库项下的“Stud”项,在出现的快捷菜单中选择“属性”命令,在出现的“数据库属性Stud”对话框中单击“选项页”中的“权限”项,此时全为空白项,说明没有授予任何权限。(2)单击“添加”命令按钮,在出现的“选择用户或角色”对话框中单击“浏览”命令按钮。(3)在出现的对话框中勾选“public”项,返回到“数据库属性Stud”对话框。,(4)通过勾选“public的显式权限”列表中的Delete、Insert、Select、Update的授予项以授予相应权限。如图9.5所示。,9.1.3结构化查询语言(SQL)1.SQL语言的组成SQL语言包含查询、操纵、定义和控制等几个部分。它们都是通过命令动词分开的,各种语句类型对应的命令动词如下:数据查询的命令动词为SELECT。数据定义的命令动词为CREATE、DROP。数据操纵的命令动词为INSERT、UPDATE、DELETE。数据控制的命令动词为GRANT、REVOKE。,2.数据定义语言(1)CREATE语句CREATE语句用于建立数据表,其基本格式如下:CREATETABLE表名(列名1数据类型1NOTNULL,列名2数据类型2NOTNULL)(2)DROP语句DROP语句用于删除数据表,其基本格式如下:DROPTABLE表名,3.数据操纵语言(1)INSERT语句INSERT语句用于在一个表中添加新记录,然后给新记录的字段赋值。其基本格式如下:INSERTINTO表名(列名1,列名2,)VALUES(表达式1,表达式2,),(2)UPDATE语句UPDATE语句用于新的值更新表中的记录。其基本格式如下:UPDATE表名SET列名1=表达式1,SET列名2=表达式2WHERE条件表达式(3)DELETE语句DELETE语句用于删除记录,其基本格式如下:DELETEFROM表名WHERE条件表达式,4.数据查询语句SQL的数据查询语句是使用很频繁的语句。SELECT的基本格式如下:SELECT字段表FORM表名WHERE查询条件GROUPBY分组字段HAVING分组条件ORDERBY字段ASC|DESC各子句的功能如下:SELECT:指定要查询的内容。FORM:指定从其中选定记录的表名。WHERE:指定所选记录必须满足的条件。GROUPBY:把选定的记录分成特定的组。HAVING:说明每个组需要满足的条件。ORDERBY:按特定的次序将记录排序。,【例9.4】查询student表中“09002”班所有学生记录。,SELECT*FROMstudentWHERE班号=09002,SELECTstudent.学号,student.姓名,score.课程名,score.分数FROMstudent,scoreWHEREstudent.学号=score.学号ORDERBYscore.课程名,【例9.6】查询所有学生的学号、姓名、课程名和分数,要求按课程名排序。,【例9.7】查询分数在8090之间的所有学生的学号、姓名、课程名和分数。,SELECTstudent.学号,student.姓名,score.课程名,score.分数FROMstudent,scoreWHEREstudent.学号=score.学号ANDscore.分数BETWEEN80AND90,【例9.8】查询每个班每门课程的平均分。,SELECTstudent.班号,score.课程名,AVG(score.分数)AS平均分FROMstudent,scoreWHEREstudent.学号=score.学号GROUPBYstudent.班号,score.课程名,【例9.9】查询最高分的学生姓名和班号。,SELECTstudent.姓名,student.班号FROMstudent,scoreWHEREstudent.学号=score.学号ANDscore.分数=(SELECTMAX(分数)FROMscore),9.2ADO.NET模型9.2.1ADO.NET简介ADO.NET是在.NETFramework上访问数据库的一组类库,它利用.NETDataProvider(数据提供程序)以进行数据库的连接与访问。通过ADO.NET,数据库程序设计人员能够很轻易地使用各种对象来访问符合自己需求的数据库内容。,9.2.2ADO.NET体系结构,【说明】ADO.NET是在.NETFramework上访问数据库的一组类库。ADO.NET将数据库中的数据将通过DataAdapter对象,以XML的格式传送到客户端的DataSet对象中,实现数据库的离线操作。DataSet对象被称为“内存数据库”,具有DBMS的主要功能。(如:DataSet对象中含有DataTable对象、DataTable又含有DataRow、DataColum对象)客户端对数据的操作都是在本地DataSet对象中完成的。最后,再通过DataAdapter对象“回写”到数据库中。ADO.NET也提供“快捷、简单”的数据读取方法。如:通过,DataReader对象实现针对查询结果的只读操作。,1.NETDataProvider.NETDataProvider是指访问数据源的一组类库,主要是为了统一对于各类型数据源的访问方式而设计的一套高效能的类库。下表给出了.NETDataProvider中包含的4个对象。,在.NETFramework中常用的有如下4组数据提供程序:(1)SQL.NETDataProvider(2)OLEDB.NETDataProvider(3)ODBC.NETDataProvider(4)ORACLE.NETDataProvider用于访问不同类型的数据库资源。,【注意】如果采用SQL.NETDataProvider访问SQLServer数据源,则相应的ADO.NET对象名称之前都要加上“SQL”。如:SqlConnection、SqlCommand、SqlDataAdapter、SqlDataReader。,2.DataSetDataSet(数据集)是ADO.NET离线数据访问模型中的核心对象,主要使用时机是在内存中暂存并处理各种从数据源中所取回的数据。DataSet其实就是一个存放在内存中的数据暂存区,这些数据必须通过DataAdapter对象与数据库进行数据交换。在DataSet内部允许同时存放一个或多个不同的数据表(DataTable)对象。这些数据表是由数据列和数据域所组成的,并包含有主索引键、外部索引键、数据表间的关系(Relation)信息以及数据格式的条件限制(Constraint)。,9.2.3ADO.NET数据库的访问流程ADO.NET数据库访问的一般流程如下:(1)建立Connection对象,创建一个数据库连接。(2)在建立连接的基础上可以使用Command对象对数据库发送查询、新增、修改和删除等命令。(3)创建DataAdapter对象,从数据库中取得数据。(4)创建DataSet对象,将DataAdapter对象填充到DataSet对象(数据集)中。(5)如果需要,可以重复操作,一个DataSet对象可以容纳多个数据集合。(6)关闭数据库连接。(7)在DataSet上进行所需要的操作。若数据集的数据要输出到窗体中或者网页上,则可将DataSet绑定道数据控件上。,9.3ADO.NET的数据访问对象9.3.1SqlConnection对象在数据访问中首先必须是建立数据库的物理连接。.NETDataProvider使用SqlConnection类的对象建立与SQLServer数据库的物理连接。,1.SqlConnection类,2.建立连接字符串ConnectionString建立连接字符串的方式是:先创建一个SqlConnection对象,将其ConnectionString属性设置为如下值:,DataSource=localhost;InitialCatalog=Stud;IntegratedSecurity=False;UserId=sa;Password=123456,【注】:另外一种ConnectionString格式:“server=(local);database=Stud;user=sa;password=123456,ConnectionString中的常用的关键字值有效名称如下:,DataSource(或Server或Address):要连接的SQLServer实例的服务器名称或网络地址。InitialCatalog(或Database):数据库的名称。IntegratedSecurity(或Trusted_Connection):为False(默认值)时,将在连接中指定用户ID和密码。为True时,将使用当前的Windows帐户凭据进行身份验证。可识别的值为True、False、yes、no以及与True等效的sspi(强烈推荐)。,ConnectionString中的常用的关键字值有效名称如下:,PersistSecurityInfo:为False(默认值)或no(强烈推荐)时,如果连接是打开的或者一直处于打开状态,那么安全敏感信息(如密码)将不会作为连接的一部分返回。重置连接字符串将重置包括密码在内的所有连接字符串值。可识别的值为True、False、yes和no。UserID:SQLServer登录帐户。Password(或Pwd):SQLServer帐户登录的密码。,在指定连接字符串后,就可使用Open方法打开连接。,【例9.10】设计一个说明直接建立连接字符串的连接过程的网页WebForm9-1.aspx。其设计步骤如下:(1)在Myaspnet网站的ch9文件夹中添加一个名称为WebForm9-1的空网页。(2)其设计界面如下图所示,其中包含一个Button控件Button1和一个标签Label1,将该网页的StyleSheetTheme属性设置为Blue。,在该网页上设计如下事件过程:protectedvoidButton1_Click(objectsender,EventArgse)stringmystr;SqlConnectionmyconn=newSqlConnection();mystr=DataSource=localhost;InitialCatalog=Stud;+IntegratedSecurity=False;UserId=sa;Password=123456;myconn.ConnectionString=mystr;myconn.Open();if(myconn.State=ConnectionState.Open)Label1.Text=成功连接到SQLServer数据库;elseLabel1.Text=不能连接到SQLServer数据库;myconn.Close();,3.将连接字符串存放在Web.config文件中可以在Web.config文件中保存用于连接数据库的连接字符串,再通过对Web.config文件加密,从而达到保护连接字符串的目的。例如,在节中插入以下代码:,这样,以下代码自动获取Web.config文件中的连接字符串myconnstring:,stringmystr=ConfigurationManager.ConnectionStringsmyconnstring.ToString();SqlConnectionmyconn=newSqlConnection();myconn.ConnectionString=mystr;myconn.Open();,也可以在Web.config文件的节中插入以下代码:,这样,以下代码自动获取Web.config文件中的连接字符串myconnstring:,stringmystr=ConfigurationManager.AppSettingsmyconnstring;SqlConnectionmyconn=newSqlConnection();myconn.ConnectionString=mystr;myconn.Open();,9.3.2SqlCommand对象建立数据连接之后,就可以执行数据访问操作和数据操纵操作了。一般对数据库的操作被概括为CRUDCreate、Read、Update和Delete。在ADO.NET中定义SqlCommand类去执行这些操作。,1.SqlCommand类的属性和方法,2.创建SqlCommand对象SqlCommand类的主要构造函数如下:SqlCommand();SqlCommand(cmdText);SqlCommand(cmdText,connection);其中,cmdText参数指定查询命令的文本。connection参数是一个SqlConnection,它表示到SQLServer数据库的连接。,例如,以下语句创建一个SqlCommand对象mycmd:SqlConnectionmyconn=newSqlConnection();mystr=DataSource=localhost;InitialCatalog=Stud;+IntegratedSecurity=False;UserId=sa;Password=123456;myconn.ConnectionString=mystr;myconn.Open();SqlCommandmycmd=newSqlCommand(SELECT*FROMstudent,myconn);,3.通过SqlCommand对象返回单个值在SqlCommand的方法中,ExecuteScalar方法执行返回单个值的SQL命令。例如,如果想获取Student数据表中学生的总人数,则可以使用这个方法执行SQL查询:SELECTCount(*)FROMstudent,【例9.11】设计一个通过SqlCommand对象求score表中的平均分的网页WebForm9-2.aspx。解:其设计步骤如下:(1)在Myaspnet网站的ch9文件夹中添加一个名称为WebForm9-2的空网页。(2)其设计界面如下图所示,其中包含一个HTML标签、一个文本框TextBox1和一个Button控件Button1,将该网页的StyleSheetTheme属性设置为Blue。,在该网页上设计如下事件过程:,protectedvoidButton1_Click(objectsender,EventArgse)stringmystr,mysql;SqlConnectionmyconn=newSqlConnection();SqlCommandmycmd=newSqlCommand();mystr=DataSource=localhost;InitialCatalog=Stud;+IntegratedSecurity=False;UserId=sa;Password=123456;myconn.ConnectionString=mystr;myconn.Open();mysql=SELECTAVG(分数)FROMscore;mycmd.CommandText=mysql;mycmd.Connection=myconn;TextBox1.Text=mycmd.ExecuteScalar().ToString();myconn.Close();,网页运行界面,单击工具栏中的按钮运行本网页,再单击“求平均分”命令按钮,其运行结果如下图所示,表示所有学生平均分为78。,4.通过SqlCommand对象执行修改操作在SqlCommand的方法中,ExecuteNonQuery方法执行不返回数据结果的SQL命令。该方法主要用来更新数据,通常使用它来执行UPDATE、INSERT和DELETE语句。该方法不返回行,对于UPDATE、INSERT和DELETE语句,返回值为该命令所影响的行数,对于所有其他类型的语句,返回值为-1。,【例9.12】设计一个通过SqlCommand对象将score表中所有分数增5分和减5分的网页WebForm9-3。解:其设计步骤如下:(1)在Myaspnet网站的ch9文件夹中添加一个名称为WebForm9-3的空网页。(2)其设计界面如下图所示,其中包含两个Button控件Button1和Button2,将该网页的StyleSheetTheme属性设置为Blue。,网页设计界面,在该网页上设计如下事件过程:,publicpartialclassWebForm9_3:System.Web.UI.PageSqlCommandmycmd=newSqlCommand();/公共字段SqlConnectionmyconn=newSqlConnection();/公共字段protectedvoidPage_Load(objectsender,EventArgse)stringmystr;mystr=DataSource=localhost;InitialCatalog=Stud;+IntegratedSecurity=False;UserId=sa;Password=123456;myconn.ConnectionString=mystr;myconn.Open();protectedvoidPage_Unload()myconn.Close();/关闭本网页时关闭连接,protectedvoidButton1_Click(objectsender,EventArgse)stringmysql;mysql=UPDATEscoreSET分数=分数+5;mycmd.CommandText=mysql;mycmd.Connection=myconn;mycmd.ExecuteNonQuery();protectedvoidButton2_Click(objectsender,EventArgse)stringmysql;mysql=UPDATEscoreSET分数=分数-5;mycmd.CommandText=mysql;mycmd.Connection=myconn;mycmd.ExecuteNonQuery();,单击工具栏中的按钮运行本网页,单击“分数+5”命令按钮,此时score表中所有分数都增加5分,为了保存score表不变,再单击“分数-5”命令按钮,此时score表中所有分数都恢复成原来的数据,其运行界面如下图所示。,5.在SqlCommand对象的SQL命令中指定参数SQL.NETDataProvider支持执行命令中包含参数的情况,也就是说,可以使用包含参数的数据命令或存储过程执行数据筛选操作和数据更新等操作,其主要流程如下:(1)创建Connection对象,并设置相应的属性值。(2)打开Connection对象。(3)创建Command对象并设置相应的属性值,其中CommandText属性中含有占位符。(4)创建参数对象,将建立好的参数对象添加到Command对象的Parameters集合中。(5)为参数对象赋值。(6)执行数据命令。(7)关闭相关对象。,例如,下面的更新语句:“UPDATEcourseSETcName=NameWHEREcID=ID”其中course是一个课程表,有cID(课程号)和cName(课程名)两个列。该命令是将指定cID的课程记录的cName替换成指定的值。其中ID和Name均为参数,在执行该语句之前需要为参数赋值。,可以使用以下命令向Parameters参数集合中添加参数值:mycmd.Parameters.Add(Name,SqlType.VarChar,10).Value=Name1;mycmd.Parameters.Add(ID,SqlType.VarChar,5).Value=ID1;,【例9.13】设计一个通过SqlCommand对象求出指定学号学生的平均分的网页WebForm9-4。解:其设计步骤如下:(1)在Myaspnet网站的ch9文件夹中添加一个名称为WebForm9-4的空网页。(2)其设计界面如下图所示,其中包含两个HTML标签、两个文本框(TextBox1和TextBox2)和一个Button控件Button1,将该网页的StyleSheetTheme属性设置为Blue。,网页设计界面,在该网页上设计如下事件过程:,protectedvoidButton1_Click(objectsender,EventArgse)stringmystr,mysql;SqlConnectionmyconn=newSqlConnection();SqlCommandmycmd=newSqlCommand();mystr=DataSource=localhost;InitialCatalog=Stud;+IntegratedSecurity=False;UserId=sa;Password=123456;myconn.ConnectionString=mystr;myconn.Open();mysql=SELECTAVG(分数)FROMscoreWHERE学号=no;mycmd.CommandText=mysql;mycmd.Connection=myconn;SqlParameterp1=newSqlParameter(no,SqlDbType.VarChar,5);mycmd.Parameters.Add(p1);p1.value=TextBox1.Text.Trim();TextBox2.Text=mycmd.ExecuteScalar().ToString();myconn.Close();,网页运行界面,上述代码先建立连接,然后通过ExecuteScalar方法执行SQL命令,通过“no”替换返回指定学号的平均分。运行本网页,输入学号8,单击“求平均分”命令按钮,运行界面如下图所示。,9.3.3SqlDataReader对象当执行返回结果集的命令时,需要一个方法从结果集中提取数据。处理结果集的方法有两个:(1)使用SqlDataReader对象(数据阅读器);(2)同时使用SqlDataAdapter对象(数据适配器)+DataSet对象。,1.SqlDataReader类的属性和方法,2.创建SqlDataReader对象在ADO.NET中,SqlDataReader类没有提供构造函数。人们通常调用Command类的ExecuteReader方法,这个方法将返回一个DataReader对象。例如,以下代码创建一个SqlDataReader对象myreader:SqlCommandcmd=newSqlCommand(CommandText,ConnectionObject);SqlDataReadermyreader=cmd.ExecuteReader();注意:SqlDataReader对象不能使用new来创建。,3.遍历SqlDataReader对象的记录当ExecuteReader方法返回DataReader对象时,当前光标的位置是第一条记录的前面。必须调用SqlDataReader对象的Read方法把光标移动到第一条记录,然后,第一条记录将变成当前记录。如果SqlDataReader对象中包含的记录不止一条,Read方法就返回一个Boolean值true。想要移动到下一条记录,需要再次调用Read方法。重复上述过程,直到最后一条记录,此时Read方法将返回false。经常使用While循环来遍历记录:while(myreader.Read()/读取数据只要Read方法返回的值为true,就可以访问当前记录中包含的字段。,4访问字段中的值(1)Item属性每一个DataReader对象都定义了一个Item属性,此属性返回一个由字段序号或字段名指定的字段值。字段序号总是基于0开始编号的。如:SqlDataReatermyreader=mycmd.ExecuteReader();Stringstr1=myreader1;Stringstr2=myreader“Cname”;,(2)Get系列方法每一个DataReader对象都定义了一组Get方法,那些方法将返回适当类型的值。例如,GetInt32方法把返回的字段值作为32位整数,每一个Get方法都以字段序号为参数。例如,:myreader.GetInt320;myreader.GetString1;,【例9.14】设计一个通过SqlDataReader对象在一个列表框中输出所有学生记录的网页WebForm9-5。解:其设计步骤如下:(1)在Myaspnet网站的ch9文件夹中添加一个名称为WebForm9-5的空网页。(2)其设计界面如下图所示,其中包含一个列表框ListBox1(Rows属性设为8)和一个Button控件Button1,将该网页的StyleSheetTheme属性设置为Blue。,网页设计界面,在该网页上设计如下事件过程:,protectedvoidButton1_Click(objectsender,EventArgse)stringmystr,mysql;SqlConnectionmyconn=newSqlConnection();SqlCommandmycmd=newSqlCommand();mystr=DataSource=localhost;InitialCatalog=Stud;+IntegratedSecurity=False;UserId=sa;Password=123456;myconn.ConnectionString=mystr;myconn.Open();mysql=SELECT*FROMstudent;mycmd.CommandText=mysql;mycmd.Connection=myconn;SqlDataReadermyreader=mycmd.ExecuteReader();ListBox1.Items.Add(学号姓名性别民族班号);ListBox1.Items.Add(=);while(myreader.Read()/循环读取信息ListBox1.Items.Add(String.Format(01234,myreader0.ToString(),myreader1.ToString(),myreader2.ToString(),myreader3.ToString(),myreader4.ToString();myconn.Close();myreader.Close();,网页运行界面,单击工具栏中的按钮运行本网页,单击“输出所有学生”命令按钮,运行界面如下图所示。,9.3.4SqlDataAdapter对象SqlDataAdapter对象(数据适配器)可以执行SQL命令以及调用存储过程、传递参数,最重要的是取得数据结果集,在数据库和DataSet对象之间来回传输数据。,数据库,DataSet对象,SqlDataAdapter对象,1.SqlDataAdapter类的属性和方法,2.创建SqlDataAdapter对象SqlDataAdapter类有以下构造函数:SqlDataAdapter();SqlDataAdapter(SqlCommandcmd);SqlDataAdapter(selectCommandText);SqlDataAdapter(selectCommandText,selectConnection);SqlDataAdapter(selectCommandText,selectConnectionString);,例如:stringmystr,mysql;SqlConnectionmyconn=newSqlConnection();mystr=DataSource=localhost;InitialCatalog=Stud;+IntegratedSecurity=False;UserId=sa;Password=123456;myconn.ConnectionString=mystr;myconn.Open();mysql=SELECT*FROMstudent;SqlDataAdaptermyadapter=newSqlDataAdapter(mysql,myconn);myconn.Close();,3.使用Fill方法Fill方法用于向DataSet对象填充从数据源中读取的数据。调用Fill方法的语法格式有多种,常见的格式如下:SqlDataAdapter对象名.Fill(DataSet对象名,数据表名);其中第一个参数是数据集对象名,表示要填充的数据集对象;第二个参数是一个字符串,表示在本地缓冲区中建立的临时表的表名。例如,以下语句用course表数据填充数据集mydataset1:SqlDataAdapter1.Fill(mydataset1,course);,4.使用Update方法Update方法用于将数据集DataSet对象中的数据按InsertCommand属性、DeleteCommand属性和UpdateCommand属性所指定的要求更新数据源,即调用3个属性中所定义的SQL语句来更新数据源。Update方法常见的调用格式如下。SqlDataAdapter对象名.Update(DataSet对象名,数据表名);其中第一个参数是数据集对象名,表示要将哪个数据集对象中的数据更新到数据源中;第二个参数是一个字符串,表示临时表的名称。,9.4DataSet对象DataSet是ADO.NET数据库访问组件的核心,主要是用来支持ADO.NET的不连贯连接及数据分布。它的数据驻留内存,可以保证和数据源无关的一致性的关系模型,并用于多个异种数据源的数据操作。9.4.1DataSet对象概述,创建DataSet对象有多种方法:设计工具也可以使用程序代码来创建DataSet对象。使用程序代码创建DataSet对象的语法格式如下:DataSet对象名=newDataSet();或DataSet对象名=newDataSet(dataSetName);其中,dataSetName为一个字符串,用于指出DataSet的名称。,DataTable对象,9.4.2Dataset对象的属性和方法,DataSet,Tables:DataTable集合,DataTable对象,Columns:DataColumn集合,Rows:DataRow集合,DataTable对象,DataColumn对象,DataTable对象,DataRow对象,9.4.3Tables集合和DataTable对象DataSet对象的Tables属性由表组成,每个表是一个DataTable对象。实际上,每一个DataTable对象代表了数据库中的一个表,每个DataTable数据表都由相应的行和列组成。可以通过索引来引用Tables集合中的一个表,例如,Tablesi表示第i个表,其索引值从0开始编号。,1.Tables集合的属性和方法,2.DataTable对象一个DataTable对象包含一个Columns属性即列集合,和一个Rows属性即行集合。,3.建立包含在DataSet中的表建立包含在数据集中的表的方法主要有以下两种。(1)利用SqlDataAdapter的Fill方法自动建立DataSet中的DataTable对象先通过SqlDataAdapter对象从数据源中提取记录数据,然后调用其Fill方法,将所提取的记录存入DataSet中对应的表内,如果DataSet中不存在对应的表,Fill方法会先建立表再将记录填入其中。例如,以下语句向DataSet对象myds中添加一个表course及其包含的数据记录:DataSetmyds=newDataSet();SqlDataAdaptermyda=newSqlDataAdapter(SELECT*Fromcourse,myconn);myda.Fill(myds,course);,(2)将建立的DataTable对象添加到DataSet中(较少适用)先建立DataTable对象,然后调用DataSet的表集合属性Tables的Add方法,将DataTable对象添加到DataSet对象中。例如,以下语句向DataSet对象myds中添加一个表,并返回表的名称course:DataSetmyds=newDataSet();DataTablemydt=newDataTable(course);myds.Tables.Add(mydt);textBox1.Text=myds.Tablescourse.TableName;/文本框中显示“course”,Columns集合和DataColumn对象Rows集合和DataRow对象Relations集合和DataRelation对象,以下内容自学:,9.5数据源控件9.5.1数据源控件概述数据源控件允许用户使用不同类型的数据源,如数据库、XML文件或中间层业务对象。数据源控件连接到数据源,从中检索数据,并使得其他控件可以绑定到数据源而无需代码。数据源控件还支持修改数据。,9.5.2SqlDataSource控件SqlDataSource控件对应的类为SqlDataSource,它表示到Web应用程序中数据库的直接连接。数据绑定控件(如GridView、DetailsView和FormView控件)可以使用SqlDataSource控件自动检索和修改数据。可以将用来选择、插入、更新和删除数据的命令指定为SqlDataSource控件的一部分,并让该控件自动执行这些操作。用户无需编写代码来创建连接并指定用于查询和更新数据库的命令。,1.SqlDataSource控件的属性、方法和事件SqlDataSource控件的构造函数如下:,SqlDataSource()。初始化SqlDataSource类的新实例。SqlDataSource(stringconnectionString,stringselectCommand)。使用指定的连接字符串和Select命令初始化SqlDataSource类的新实例。SqlDataSource(stringproviderName,stringconnectionString,stringselectCommand)。使用指定的连接字符串和Select命令初始化SqlDataSource类的新实例。,表9.34SqlDataSource控件的常用属性及其说明,表9.35SqlDataSource控件的常用方法及其说明,2.SqlDataSource控件的功能SqlDataSource控件提供了选择和显示数据,对数据进行排序、分页和缓存,更新、插入和删除数据,使用运行时参数筛选数据等。其主要的功能及其要求如表9.37所示。,3.使用SqlDataSource控件连接到SQLServer2005数据库可以将SqlDataSource控件连接到SQLServer2005数据库,然后使用某些控件(例如GridView)来显示或编辑数据。,【例9.16】设计一个通过SqlDataSource控件来访问student表,并采用GridView控件显示所有记录的网页WebForm9-7。解:其操作步骤如下:新建用来连接到SQLServer2005数据库的网页WebForm9-7.aspx。切换到“设计”视图。从工具箱的“数据”选项卡中将SqlDataSource控件拖动到页面上。如果智能标记面板没有显示,单击SqlDataSource1控件右上方的智能标记。在“SqlDataSource任务”列表中,单击“配置数据源”将显示“配置数据源”向导。,出现“选择您的数据库”对话框,如图9.29所示,单击“新建连接”按钮。,出现“添加连接”对话框”,在“服务器名”中输入或选择“LCB-PC”项,选中“使用SQLServer身份验证”,在用户名文本框中输入“sa”,在密码文本框中输入“123456”,选择“Stud”数据库,如图9.30所示。单击“测试连接”后出现连接成功信息,单击“确定”按钮返回。,单击“下一步”按钮,出现“将连接字符串保存到应用程序配置文件中”对话框,保持默认值,如图9.31所示,单击“下一步”按钮。,说明:当这一步中勺选“是否将连接保存到应用程序配置文件中”,则自动修改Webconfig文件的节加下:,出现“配置Select语句”对话框,选择“student”表,并勾选所有列,如图9.32所示。单击“高级”按钮,出现“高级SQL生成选项”对话框,勺选“生成INSERT、UPDATE和DELETE语句来更新数据源”选项,如图9.33所示,单击“确定”按钮。,图9.32“配置Select语句”对话框,图9.33“高级SQL生成选项”对话框,单击“下一步”按钮,在出现的对话框中单击“测试查询”按钮,出现如图9.34所示的对话框,表示查找成功。单击“完成”按钮。,这样就在网页中建立好了SqlDataSource1控件,其SelectQuery属性自动设置为:SELECT学号,姓名,性别,民族,班号FROMstudentInsertQuery属性自动设置为:INSERTINTOstudent(学号,姓名,性别,民族,班号)VALUES(学号,姓名,性别,民族,班号)UpadteQuery属性自动设置为:UPDATEstudentSET姓名=姓名,性别=性别,民族=民族,班号=班号WHERE学号=学号DeleteQuery属性自动设置为:DELETEFROMstudentWHERE学号=学号这些SQL语句分别用于SqlDataSource1控件执行查询、插入、修改和删除操作。而且只能执行这样的操作,不能像ObjectDataSource控件那样指定更加复杂的业务逻辑。,在网页中拖放一个GridView控件GridView1,单击SqlDataSource1控件右上方的智能标记,在出现快捷菜单中,将“选择数据源”选择为“SqlDataSource1”,并勾选“启动分页”,设置其PageSize属性为3。,11,设计界面,单击工具栏中的按钮运行本网页,运行结果如图9.36所示。,运行界面,9.5.3AccessDataSource控件(略)AccessDataSource控件对应的类为AccessDataSource,它是从SqlDataSource类继承的。与SqlDataSource控件的使用十分相似。若要连接到Access数据库,可以由DataFile属性提供文件路径,无法设置AccessDataSource控件的ConnectionString属性,它是自动生成的。这里不多介绍。,9.6数据绑定控件数据绑定就是把数据连接到网页的过程。在数据绑定后,可以通过网页界面来操作数据库中的数据。9.6.1数据绑定概述数据绑定控件将数据以标记的形式呈现给请求数据的浏览器。数据绑定控件可以绑定到数据源控件,并自动在页请求生命周期的适当时间获取数据。数据绑定控件可以利用数据源控件提供的功能,包括排序、分页、缓存、筛选、更新、删除和插入。数据绑定控件通过其DataSourceID属性连接到数据源控件。,9.6.2列表控件列表控件在实现数据绑定时主要指定控件的DataSource和DataTextFi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【正版授权】 ISO/IEC TR 24716:2007 EN Information technology - Programming languages,their environment and system software interfaces - Native COBOL Syntax for XML Support
- 【正版授权】 IEC TR 63162:2025 EN Electric components - Reliability - Failure rates at reference conditions
- 2025至2030中国电脑式微波炉行业发展研究与产业战略规划分析评估报告
- 2025至2030中国电影院行业市场发展分析及竞争格局与投资发展报告
- 2025至2030中国电子烟与抽气行业产业运行态势及投资规划深度研究报告
- 2025至2030中国电子临床试验行业产业运行态势及投资规划深度研究报告
- 2025至2030中国玉米剥壳机行业市场深度研究及发展前景投资可行性分析报告
- 专业安全知识培训课件
- 教育大数据分析中的伦理与隐私问题探讨
- 消防中级培训课件下载
- (高清版)DB13(J)∕T 295-2019 既有住宅建筑综合改造技术规程
- 打包设备转让协议书
- 信用社2025年风险管理工作计划
- 艺术测评服务合同协议
- 非盗抢车辆协议合同协议
- 2024年09月江苏宿迁市泗阳县农村订单定向医学毕业生定向招聘30人笔试历年专业考点(难、易错点)附带答案详解
- 儿童福利机构儿童成长档案记录与管理规范
- YS/T 3045-2022埋管滴淋堆浸提金技术规范
- 2025年1月国家开放大学汉语言文学本科《古代诗歌散文专题》期末纸质考试试题及答案
- 光伏发电工程可行性研究报告编制办法(试行)-GD-003-2025
- 新能源车辆充电桩建设和运营合同
评论
0/150
提交评论