《ADONET数据访问技术.pptx》由会员分享,可在线阅读,更多相关《ADONET数据访问技术.pptx(166页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、9.1 数据库概述9.1.1 关系数据库的基本结构1.表2.记录3.字段4.关系5.索引6.视图7.存储过程第1页/共166页表9.1 学生情况表student学号学号姓名姓名性别性别民族民族班号班号1王华王华女女汉族汉族070012孙丽孙丽女女满族满族070023李兵李兵男男汉族汉族070016张军张军男男汉族汉族070018马棋马棋男男回族回族07002表9.2 学生成绩表score学号学号课程名课程名分数分数1C语言语言801数据结构数据结构832C语言语言702数据结构数据结构523C语言语言763数据结构数据结构706C语言语言906数据结构数据结构928C语言语言888数据结构数据
2、结构79Stud 数据库中有以下两个表:第2页/共166页9.1.2 SQL Server 2005数据库管理系统SQL Server 2005是微软公司在SQL Server 2000基础上推出的关系数据库管理系统,是目前主流的数据库管理系统之一。SQL Server2005版本:uSQL Server 2005 Enterprise Edition(X86/X64)企业版uSQL Server 2005 Standard Edition(X86/X64)标准版uSQL Server 2005 Workgroup Edition(X86)工作组版uSQL Server 2005 Develo
3、per Edition(X86/X64)开发版uSQL Server 2005 Express Edition(X86)学习版 SQL Server 7 SQL Server 2000 SQL Server 2005 SQL Server 2008 SQL Server 2012第3页/共166页1.建立数据库Stud在安装并进入SQL Server 2005系统后(这里的登录名为sa,密码为123456),通过右击“数据库”项,在出现的快捷菜单中选择“新建数据库”命令,建立一个名称为Stud的数据库,将其路径改为Myaspnet网站的App_Data文件夹中(完整路径为C:ASPNET示例A
4、SPNETApp_Data文件夹),这样自动建立Stud.mdf和Stud_log.ldf两个文件,前者为数据库主文件,后者是日志文件。第4页/共166页2.建立数据表student和score再展开Stud数据库,右击下方的“表”项,在出现的快捷菜单中选择“新建表”命令,可以通过交互建立表结构。这里新建student和score两个表,前者的关键字为“学号”,后者的关键字为“学号+课程名”,它们的表结构分别如图9.1和9.2所示。这样在Stud数据库的表项下方出现db.student和dbo.score两个表项,选中student表,右击鼠标,在出现的快捷菜单中选择“打开表”,可以输入表记录
5、。在student和score表中输入的记录分别如图9.3和9.4所示(分别对应表9.1和表9.2中的记录)。本章后面的例子使用这些样本数据介绍数据库编程方法。第5页/共166页图9.1 student表结构 图9.2 score表结构 第6页/共166页图9.3 student表记录 图9.4 score表记录 第7页/共166页3.权限设置为了在网页中访问Stud数据库,必须给Stud数据库设置一些访问权限,否则在网页运行时出现以下错误:无法打开登录所请求的数据库Stud。登录失败。用户LCB-PCASPNET登录失败。为了简单,给Stud数据库设置一些公共用户访问权限,其操作如下:(1)
6、右击数据库项下的“Stud”项,在出现的快捷菜单中选择“属性”命令,在出现的“数据库属性Stud”对话框中单击“选项页”中的“权限”项,此时全为空白项,说明没有授予任何权限。(2)单击“添加”命令按钮,在出现的“选择用户或角色”对话框中单击“浏览”命令按钮。(3)在出现的对话框中勾选“public”项,返回到“数据库属性Stud”对话框。第8页/共166页(4)通过勾选“public的显式权限”列表中的Delete、Insert、Select、Update的授予项以授予相应权限。如图9.5所示。第9页/共166页9.1.3 结构化查询语言(SQL)1.SQL语言的组成SQL语言包含查询、操纵、
7、定义和控制等几个部分。它们都是通过命令动词分开的,各种语句类型对应的命令动词如下:n 数据查询的命令动词为SELECT。n 数据定义的命令动词为CREATE、DROP。n 数据操纵的命令动词为INSERT、UPDATE、DELETE。n 数据控制的命令动词为GRANT、REVOKE。第10页/共166页2.数据定义语言(1)CREATE语句CREATE语句用于建立数据表,其基本格式如下:CREATE TABLE 表名(列名1数据类型1 NOT NULL,列名2数据类型2 NOT NULL)(2)DROP语句DROP语句用于删除数据表,其基本格式如下:DROP TABLE 表名第11页/共166
8、页3.数据操纵语言(1)INSERT语句 INSERT语句用于在一个表中添加新记录,然后给新记录的字段赋值。其基本格式如下:INSERT INTO 表名(列名1,列名2,)VALUES(表达式1,表达式2,)第12页/共166页(2)UPDATE语句UPDATE语句用于新的值更新表中的记录。其基本格式如下:UPDATE 表名 SET 列名1=表达式1 ,SET 列名2=表达式2WHERE 条件表达式(3)DELETE语句DELETE语句用于删除记录,其基本格式如下:DELETE FROM 表名WHERE 条件表达式第13页/共166页4.数据查询语句SQL的数据查询语句是使用很频繁的语句。SE
9、LECT的基本格式如下:SELECT 字段表FORM 表名WHERE 查询条件GROUP BY 分组字段HAVING 分组条件ORDER BY 字段ASC|DESC各子句的功能如下:u SELECT:指定要查询的内容。u FORM:指定从其中选定记录的表名。u WHERE:指定所选记录必须满足的条件。u GROUP BY:把选定的记录分成特定的组。u HAVING:说明每个组需要满足的条件。u ORDER BY:按特定的次序将记录排序。第14页/共166页【例9.4】查询student表中“09002”班所有学生记录。SELECT*FROM student WHERE 班号=09002第15页
10、/共166页SELECT student.学号,student.姓名,score.课程名,score.分数FROM student,scoreWHERE student.学号=score.学号ORDER BY score.课程名 【例9.6】查询所有学生的学号、姓名、课程名和分数,要求按课程名排序。第16页/共166页【例9.7】查询分数在8090之间的所有学生的学号、姓名、课程名和分数。SELECT student.学号,student.姓名,score.课程名,score.分数FROM student,scoreWHERE student.学号=score.学号 AND score.分数
11、BETWEEN 80 AND 90第17页/共166页【例9.8】查询每个班每门课程的平均分。SELECT student.班号,score.课程名,AVG(score.分数)AS 平均分FROM student,scoreWHERE student.学号=score.学号GROUP BY student.班号,score.课程名第18页/共166页【例9.9】查询最高分的学生姓名和班号。SELECT student.姓名,student.班号FROM student,scoreWHERE student.学号=score.学号 AND score.分数=(SELECT MAX(分数)FROM
12、 score)第19页/共166页9.2 ADO.NET模型9.2.1ADO.NET简介 ADO.NET是在.NET Framework上访问数据库的一组类库,它利用.NET Data Provider(数据提供程序)以进行数据库的连接与访问。通过ADO.NET,数据库程序设计人员能够很轻易地使用各种对象来访问符合自己需求的数据库内容。第20页/共166页9.2.2 ADO.NET体系结构第21页/共166页【说明】ADO.NET是在.NET Framework上访问数据库的一组类库。ADO.NET将数据库中的数据将通过DataAdapter对象,以XML的格式传送到客户端的DataSet对象
13、中,实现数据库的离线操作。DataSet对象被称为“内存数据库”,具有DBMS的主要功能。(如:DataSet对象中含有DataTable对象、DataTable又含有DataRow、DataColum对象)客户端对数据的操作都是在本地DataSet对象中完成的。最后,再通过DataAdapter对象“回写”到数据库中。ADO.NET也提供“快捷、简单”的数据读取方法。如:通过,DataReader对象实现针对查询结果的只读操作。第22页/共166页1.NET Data Provider.NET Data Provider是指访问数据源的一组类库,主要是为了统一对于各类型数据源的访问方式而设计
14、的一套高效能的类库。下表给出了.NET Data Provider中包含的4个对象。对象名称对象名称功能说明功能说明Connection提供和数据源的连接功能。提供和数据源的连接功能。Command提供运行访问数据库命令,传送数据或修改数据的功能,提供运行访问数据库命令,传送数据或修改数据的功能,例如运行例如运行SQL命令和存储过程等。命令和存储过程等。DataAdapter是是DataSet对象和数据源间的对象和数据源间的桥梁桥梁。DataAdapter使用使用4个个Command对象来运行查询、新建、修改、删除的对象来运行查询、新建、修改、删除的SQL命令,把数据加载到命令,把数据加载到D
15、ataSet,或者把,或者把DataSet内的内的数据送回数据源。数据送回数据源。DataReader通过通过Command对象运行对象运行SQL查询命令取得数据流,以查询命令取得数据流,以便进行便进行高速、只读、按顺序高速、只读、按顺序的数据浏览。的数据浏览。第23页/共166页在.NET Framework中常用的有如下4组数据提供程序:(1)SQL.NET Data Provider(2)OLEDB.NET Data Provider(3)ODBC.NET Data Provider(4)ORACLE.NET Data Provider用于访问不同类型的数据库资源。【注意】如果采用SQL
16、.NET Data Provider访问SQL Server数据源,则相应的ADO.NET对象名称之前都要加上“SQL”。如:SqlConnection、SqlCommand、SqlDataAdapter、SqlDataReader。第24页/共166页2.DataSetuDataSet(数据集)是ADO.NET离线数据访问模型中的核心对象,主要使用时机是在内存中暂存并处理各种从数据源中所取回的数据。uDataSet其实就是一个存放在内存中的数据暂存区,这些数据必须通过DataAdapter对象与数据库进行数据交换。在DataSet内部允许同时存放一个或多个不同的数据表(DataTable)对
17、象。u这些数据表是由数据列和数据域所组成的,并包含有主索引键、外部索引键、数据表间的关系(Relation)信息以及数据格式的条件限制(Constraint)。第25页/共166页第26页/共166页9.2.3 ADO.NET数据库的访问流程ADO.NET数据库访问的一般流程如下:(1)建立Connection对象,创建一个数据库连接。(2)在建立连接的基础上可以使用Command对象对数据库发送查询、新增、修改和删除等命令。(3)创建DataAdapter对象,从数据库中取得数据。(4)创建DataSet对象,将DataAdapter对象填充到DataSet对象(数据集)中。(5)如果需要,
18、可以重复操作,一个DataSet对象可以容纳多个数据集合。(6)关闭数据库连接。(7)在DataSet上进行所需要的操作。若数据集的数据要输出到窗体中或者网页上,则可将DataSet绑定道数据控件上。第27页/共166页9.3 ADO.NET的数据访问对象9.3.1 SqlConnection对象 在数据访问中首先必须是建立数据库的物理连接。.NET Data Provider使用SqlConnection类的对象建立与SQLServer数据库的物理连接。第28页/共166页 1.SqlConnection类SqlConnection类的属性类的属性说明说明ConnectionString获取
19、或设置用于打开数据库的字符串。获取或设置用于打开数据库的字符串。ConnectionTimeout获取在尝试建立连接时终止尝试并生成错误之获取在尝试建立连接时终止尝试并生成错误之前所等待的时间。前所等待的时间。Database获取当数据库连接打开后,要使用的数据库的获取当数据库连接打开后,要使用的数据库的名称。名称。DataSource获取数据源的获取数据源的服务器名服务器名或文件名。或文件名。Provider获取在连接字符串的获取在连接字符串的“Provider=”子句中指定子句中指定的的SQL提供程序的名称。提供程序的名称。State获取连接的当前状态。获取连接的当前状态。第29页/共16
20、6页SqlConnection类的方法类的方法说明说明Open()使用使用 ConnectionString 所指定的属性设置打开数所指定的属性设置打开数据库连接。据库连接。Close()关闭与数据库的连接。这是关闭任何打开连接的关闭与数据库的连接。这是关闭任何打开连接的首选方法。首选方法。CreateCommand()创建并返回一个与创建并返回一个与 SqlConnection 关联的关联的SqlCommand 对象。对象。ChangeDatabase(String DBN)为打开的为打开的SqlConnection 更改当前数据库。更改当前数据库。第30页/共166页2.建立连接字符串Co
21、nnectionString建立连接字符串的方式是:先创建一个SqlConnection对象,将其ConnectionString属性设置为如下值:Data Source=localhost;Initial Catalog=Stud;Integrated Security=False;User Id=sa;Password=123456 【注】:另外一种ConnectionString格式:“server=(local);database=Stud;user=sa;password=123456第31页/共166页ConnectionString中的常用的关键字值有效名称如下:lData So
22、urce(或Server或Address):要连接的SQL Server实例的服务器名称或网络地址。lInitial Catalog(或Database):数据库的名称。lIntegrated Security(或Trusted_Connection):l为False(默认值)时,将在连接中指定用户ID和密码。l为True时,将使用当前的Windows帐户凭据进行身份验证。可识别的值为True、False、yes、no以及与True 等效的sspi(强烈推荐)。第32页/共166页ConnectionString中的常用的关键字值有效名称如下:lPersist Security Info:l为
23、False(默认值)或no(强烈推荐)时,如果连接是打开的或者一直处于打开状态,那么安全敏感信息(如密码)将不会作为连接的一部分返回。重置连接字符串将重置包括密码在内的所有连接字符串值。可识别的值为True、False、yes和no。lUser ID:SQL Server登录帐户。lPassword(或Pwd):SQL Server帐户登录的密码。在指定连接字符串后,就可使用Open方法打开连接。第33页/共166页 【例9.10】设计一个说明直接建立连接字符串的连接过程的网页WebForm9-1.aspx。其设计步骤如下:(1)在Myaspnet网站的ch9文件夹中添加一个名称为WebFor
24、m9-1的空网页。(2)其设计界面如下图所示,其中包含一个Button控件Button1和一个标签Label1,将该网页的StyleSheetTheme属性设置为Blue。第34页/共166页在该网页上设计如下事件过程:protected void Button1_Click(object sender,EventArgs e)string mystr;SqlConnection myconn=new SqlConnection();mystr=Data Source=localhost;Initial Catalog=Stud;+Integrated Security=False;User
25、Id=sa;Password=123456;myconn.ConnectionString=mystr;myconn.Open();if(myconn.State=ConnectionState.Open)Label1.Text=成功连接到SQL Server数据库;elseLabel1.Text=不能连接到SQL Server数据库;myconn.Close();第35页/共166页3.将连接字符串存放在Web.config文件中可以在Web.config文件中保存用于连接数据库的连接字符串,再通过对Web.config文件加密,从而达到保护连接字符串的目的。例如,在节中插入以下代码:第36
26、页/共166页这样,以下代码自动获取Web.config文件中的连接字符串myconnstring:string mystr=ConfigurationManager.ConnectionStringsmyconnstring.ToString();SqlConnection myconn=new SqlConnection();myconn.ConnectionString=mystr;myconn.Open();第37页/共166页也可以在Web.config文件的节中插入以下代码:第38页/共166页这样,以下代码自动获取Web.config文件中的连接字符串myconnstring:s
27、tring mystr=ConfigurationManager.AppSettingsmyconnstring;SqlConnection myconn=new SqlConnection();myconn.ConnectionString=mystr;myconn.Open();第39页/共166页9.3.2 SqlCommand 对象 建立数据连接之后,就可以执行数据访问操作和数据操纵操作了。一般对数据库的操作被概括为CRUDCreate、Read、Update和Delete。在ADO.NET中定义SqlCommand 类去执行这些操作。SqlCommand 类的属性类的属性说明说明Co
28、mmandText获取或设置要对数据源执行的获取或设置要对数据源执行的SQL 语句或存储过程。语句或存储过程。CommandTimeout获取或设置在终止执行命令的尝试并生成错误之前的获取或设置在终止执行命令的尝试并生成错误之前的等待时间。等待时间。CommandType获取或设置一个值,表示获取或设置一个值,表示Command对象的类型对象的类型(表表9.10)Connection数据命令对象所使用的连接对象数据命令对象所使用的连接对象Parameters参数集合(参数集合(SqlParameterCollection)1.SqlCommand 类的属性和方法 第40页/共166页SqlCo
29、mmand 类的方法类的方法说明说明CreateParameter 创建创建SqlParameter对象的新实例。对象的新实例。ExecuteNonQuery()针对针对Connection 执行执行SQL语句并返回受影响的行数。语句并返回受影响的行数。一般用于执行一般用于执行Delete、Update、Insert命令命令 ExecuteReader()将将CommandText发送到发送到Connection并生成一个并生成一个SqlDataReader。用于执行。用于执行Select命令,且希望返回一命令,且希望返回一个个DataReader对象。对象。ExecuteScalar()执行
30、查询,并返回查询结果集中执行查询,并返回查询结果集中第一行的第一列第一行的第一列。忽。忽略其他列或行。略其他列或行。第41页/共166页2.创建SqlCommand 对象SqlCommand 类的主要构造函数如下:SqlCommand();SqlCommand(cmdText);SqlCommand(cmdText,connection);其中,cmdText参数指定查询命令的文本。connection参数是一个SqlConnection,它表示到SQL Server数据库的连接。第42页/共166页例如,以下语句创建一个SqlCommand 对象mycmd:SqlConnection myc
31、onn=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);第43页/共166页3.通过SqlCommand 对象返回单个值在SqlCommand 的方法中,ExecuteScalar方法执行返回单
32、个值的SQL命令。例如,如果想获取Student数据表中学生的总人数,则可以使用这个方法执行SQL查询:SELECT Count(*)FROM student第44页/共166页【例9.11】设计一个通过SqlCommand 对象求score表中的平均分的网页WebForm9-2.aspx。解:其设计步骤如下:(1)在Myaspnet网站的ch9文件夹中添加一个名称为WebForm9-2的空网页。(2)其设计界面如下图所示,其中包含一个HTML标签、一个文本框TextBox1和一个Button控件Button1,将该网页的StyleSheetTheme属性设置为Blue。第45页/共166页在
33、该网页上设计如下事件过程:protected void Button1_Click(object sender,EventArgs e)string mystr,mysql;SqlConnection myconn=new SqlConnection();SqlCommand mycmd=new SqlCommand();mystr=Data Source=localhost;Initial Catalog=Stud;+Integrated Security=False;User Id=sa;Password=123456;myconn.ConnectionString=mystr;mycon
34、n.Open();mysql=SELECT AVG(分数)FROM score;mycmd.CommandText=mysql;mycmd.Connection=myconn;TextBox1.Text=mycmd.ExecuteScalar().ToString();myconn.Close();第46页/共166页网页运行界面单击工具栏中的按钮运行本网页,再单击“求平均分”命令按钮,其运行结果如下图所示,表示所有学生平均分为78。第47页/共166页4.通过SqlCommand 对象执行修改操作在SqlCommand 的方法中,ExecuteNonQuery方法执行不返回数据结果的SQL命
35、令。该方法主要用来更新数据,通常使用它来执行UPDATE、INSERT和DELETE语句。该方法不返回行,对于UPDATE、INSERT和DELETE语句,返回值为该命令所影响的行数,对于所有其他类型的语句,返回值为-1。第48页/共166页【例9.12】设计一个通过SqlCommand 对象将score表中所有分数增5分和减5分的网页WebForm9-3。解:其设计步骤如下:(1)在Myaspnet网站的ch9文件夹中添加一个名称为WebForm9-3的空网页。(2)其设计界面如下图所示,其中包含两个Button控件Button1和Button2,将该网页的StyleSheetTheme属性
36、设置为Blue。网页设计界面第49页/共166页在该网页上设计如下事件过程:public partial class WebForm9_3:System.Web.UI.PageSqlCommand mycmd=new SqlCommand();/公共字段SqlConnection myconn=new SqlConnection();/公共字段protected void Page_Load(object sender,EventArgs e)string mystr;mystr=Data Source=localhost;Initial Catalog=Stud;+Integrated Se
37、curity=False;User Id=sa;Password=123456;myconn.ConnectionString=mystr;myconn.Open();protected void Page_Unload()myconn.Close();/关闭本网页时关闭连接第50页/共166页protected void Button1_Click(object sender,EventArgs e)string mysql;mysql=UPDATE score SET 分数=分数+5;mycmd.CommandText=mysql;mycmd.Connection=myconn;mycmd
38、.ExecuteNonQuery();protected void Button2_Click(object sender,EventArgs e)string mysql;mysql=UPDATE score SET 分数=分数-5;mycmd.CommandText=mysql;mycmd.Connection=myconn;mycmd.ExecuteNonQuery();第51页/共166页单击工具栏中的按钮运行本网页,单击“分数+5”命令按钮,此时score表中所有分数都增加5分,为了保存score表不变,再单击“分数-5”命令按钮,此时score表中所有分数都恢复成原来的数据,其运行
39、界面如下图所示。第52页/共166页5.在SqlCommand 对象的SQL命令中指定参数SQL.NET Data Provider支持执行命令中包含参数的情况,也就是说,可以使用包含参数的数据命令或存储过程执行数据筛选操作和数据更新等操作,其主要流程如下:(1)创建Connection对象,并设置相应的属性值。(2)打开Connection对象。(3)创建Command对象并设置相应的属性值,其中CommandText属性中含有占位符。(4)创建参数对象,将建立好的参数对象添加到Command对象的Parameters集合中。(5)为参数对象赋值。(6)执行数据命令。(7)关闭相关对象。第5
40、3页/共166页 例如,下面的更新语句:“UPDATE course SET cName=Name WHERE cID=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=ID
41、1;第54页/共166页【例9.13】设计一个通过SqlCommand 对象求出指定学号学生的平均分的网页WebForm9-4。解:其设计步骤如下:(1)在Myaspnet网站的ch9文件夹中添加一个名称为WebForm9-4的空网页。(2)其设计界面如下图所示,其中包含两个HTML标签、两个文本框(TextBox1和TextBox2)和一个Button控件Button1,将该网页的StyleSheetTheme属性设置为Blue。网页设计界面第55页/共166页在该网页上设计如下事件过程:protected void Button1_Click(object sender,EventArgs
42、 e)string mystr,mysql;SqlConnection myconn=new SqlConnection();SqlCommand mycmd=new SqlCommand();mystr=Data Source=localhost;Initial Catalog=Stud;+Integrated Security=False;User Id=sa;Password=123456;myconn.ConnectionString=mystr;myconn.Open();mysql=SELECT AVG(分数)FROM score WHERE 学号=no;mycmd.Command
43、Text=mysql;mycmd.Connection=myconn;SqlParameter p1=new SqlParameter(no,SqlDbType.VarChar,5);mycmd.Parameters.Add(p1);p1.value=TextBox1.Text.Trim();TextBox2.Text=mycmd.ExecuteScalar().ToString();myconn.Close();第56页/共166页网页运行界面上述代码先建立连接,然后通过ExecuteScalar方法执行SQL命令,通过“no”替换返回指定学号的平均分。运行本网页,输入学号8,单击“求平均分
44、”命令按钮,运行界面如下图所示。第57页/共166页9.3.3 SqlDataReader对象当执行返回结果集的命令时,需要一个方法从结果集中提取数据。处理结果集的方法有两个:(1)使用SqlDataReader对象(数据阅读器);(2)同时使用SqlDataAdapter对象(数据适配器)+DataSet对象。第58页/共166页1.SqlDataReader类的属性和方法属性属性说明说明FieldCount获取当前行中的列数获取当前行中的列数IsClosed获取一个布尔值,指出获取一个布尔值,指出SqlDataReader对象是否关闭对象是否关闭RecordsAffected获取执行获取执
45、行SQL语句时影响到的行数语句时影响到的行数方法方法说明说明Read()将将SqlDataReader对象前进到下一行并读取,返回布尔值指示是否对象前进到下一行并读取,返回布尔值指示是否有多行有多行Close()关闭关闭SqlDataReader对象对象IsDBNull返回布尔值,表示列是否包含返回布尔值,表示列是否包含NULL值值NextResult()将将SqlDataReader对象移到下一个结果集,返回布尔值指示该结果对象移到下一个结果集,返回布尔值指示该结果集是否有多行集是否有多行GetBoolean(int i)返回指定列的值,类型为布尔值返回指定列的值,类型为布尔值GetStri
46、ng(int i)返回指定列的值,类型为字符串返回指定列的值,类型为字符串GetByte(int i)返回指定列的值,类型为字节返回指定列的值,类型为字节GetInt32(int i)返回指定列的值,类型为整型值返回指定列的值,类型为整型值GetDouble(int i)返回指定列的值,类型为双精度值返回指定列的值,类型为双精度值GetDataTime(int i)返回指定列的值,类型为日期时间值返回指定列的值,类型为日期时间值GetOrdinal(int i)返回指定列的序号或数字位置(首列序号为返回指定列的序号或数字位置(首列序号为0)GetBoolean(int i)返回指定列的值,类型
47、为对象返回指定列的值,类型为对象第59页/共166页2.创建SqlDataReader对象在ADO.NET中,SqlDataReader类没有提供构造函数。人们通常调用Command类的ExecuteReader方法,这个方法将返回一个DataReader对象。例如,以下代码创建一个SqlDataReader对象myreader:SqlCommand cmd=new SqlCommand(CommandText,ConnectionObject);SqlDataReader myreader=cmd.ExecuteReader();注意:注意:SqlDataReaderSqlDataReade
48、r对象不能使用对象不能使用newnew来创建。来创建。第60页/共166页3.遍历SqlDataReader对象的记录当ExecuteReader方法返回DataReader对象时,当前光标的位置是第一条记录的前面。必须调用SqlDataReader对象的Read方法把光标移动到第一条记录,然后,第一条记录将变成当前记录。如果SqlDataReader对象中包含的记录不止一条,Read方法就返回一个Boolean值true。想要移动到下一条记录,需要再次调用Read方法。重复上述过程,直到最后一条记录,此时Read方法将返回false。经常使用While循环来遍历记录:while(myread
49、er.Read()/读取数据只要Read方法返回的值为true,就可以访问当前记录中包含的字段。第61页/共166页4访问字段中的值(1)Item属性每一个DataReader对象都定义了一个Item属性,此属性返回一个由字段序号或字段名指定的字段值。字段序号总是基于0开始编号的。如:SqlDataReater myreader=mycmd.ExecuteReader();String str1=myreader1;String str2=myreader“Cname”;第62页/共166页(2)Get系列方法每一个DataReader对象都定义了一组Get方法,那些方法将返回适当类型的值。例
50、如,GetInt32方法把返回的字段值作为32位整数,每一个Get方法都以字段序号为参数。例如,:myreader.GetInt320;myreader.GetString1;第63页/共166页【例9.14】设计一个通过SqlDataReader对象在一个列表框中输出所有学生记录的网页WebForm9-5。解:其设计步骤如下:(1)在Myaspnet网站的ch9文件夹中添加一个名称为WebForm9-5的空网页。(2)其设计界面如下图所示,其中包含一个列表框ListBox1(Rows属性设为8)和一个Button控件Button1,将该网页的StyleSheetTheme属性设置为Blue。