目录

  • 1 项目一 了解ASP.NET与Visual Studio 2015
    • 1.1 任务一 设计“Hello  World”
    • 1.2 任务二 ASP.NET程序构成与处理过程
    • 1.3 任务三 ASP.NET Web 常用控件
  • 2 项目二 HTML网页编程基础
    • 2.1 任务一 使用HTML语言来制作网页
    • 2.2 任务二 在网页中应用JavaScript
    • 2.3 任务三 使用样式表(CSS)来美化网页
  • 3 项目三 母版、主题及外观
    • 3.1 任务一 Master页面的创建与使用
      • 3.1.1 案例一 创建某新闻网站
    • 3.2 任务二 创建自己的网站主题和外观
      • 3.2.1 案例一 根据素材创建网站主题
    • 3.3 任务三 在程序中创建多个主题并实现主题切换
      • 3.3.1 案例一 创建多个主题并实现
  • 4 项目四 应用验证控件
    • 4.1 任务一 完成注册界面的设计
      • 4.1.1 案例一 制作提交内容必填的注册页面
      • 4.1.2 案例二 利用比较验证控件来制作注册页面
      • 4.1.3 案例三 利用范围验证控件来制作数值录入页面
      • 4.1.4 案例四 用户名邮箱格式验证
      • 4.1.5 综合任务
  • 5 项目五 掌握ASP.NET数据库操作
    • 5.1 任务一 网站用户注册页面
      • 5.1.1 案例一 测试与SQLServer数据库建立连接
      • 5.1.2 案例二 实现用户注册页面的功能
      • 5.1.3 拓展任务一
      • 5.1.4 拓展任务解析
    • 5.2 任务二 使用Command执行数据库命令
      • 5.2.1 案例一 制作显示商品分类列表的页面
      • 5.2.2 案例二 制作简单用户登录页面
      • 5.2.3 拓展任务二
      • 5.2.4 拓展任务解析
    • 5.3 任务三 使用DataReader读取数据
      • 5.3.1 案例一 完成用户信息更新页面的制作
      • 5.3.2 拓展任务三
      • 5.3.3 拓展任务解析
    • 5.4 任务四 使用DataAdapter读写数据
      • 5.4.1 案例一 完成商品分类添加页面的制作
      • 5.4.2 案例二 完成商品分类导航窗体的制作
      • 5.4.3 拓展任务四
      • 5.4.4 拓展任务解析
    • 5.5 任务五 使用DataSet
      • 5.5.1 案例一 完成显示商品信息列表页面的制作
      • 5.5.2 案例二 制作一个显示商品名称列表的页面
      • 5.5.3 拓展任务五
      • 5.5.4 拓展任务解析
    • 5.6 任务六 使用DataList控件和GridView控件
      • 5.6.1 案例一  使用DataList控件制作显示最新上架商品主要信息的页面
      • 5.6.2 案例二 使用GridView控件制作数据列表
      • 5.6.3 拓展任务六
      • 5.6.4 拓展任务解析
    • 5.7 富文本编辑器的使用
    • 5.8 二级联动下拉框的使用
      • 5.8.1 二级联动提交
  • 6 项目六 XML、站点导航
    • 6.1 任务一 写入XML文件
      • 6.1.1 案例一 创建基于XML的留言本
    • 6.2 任务二 读取XML文件
      • 6.2.1 案例一 浏览留言本数据的XML文件
    • 6.3 任务三 SiteMapPath控件的使用
      • 6.3.1 案例一 创建基于SiteMapPath的门户网站导航
    • 6.4 任务四 Tree View控件的使用
      • 6.4.1 案例一 创建基于TreeView的分类导航
      • 6.4.2 案例二 编码配置TreeView控件
    • 6.5 任务五 Menu控件的使用
      • 6.5.1 案例一 制作校园网站导航菜单
  • 7 项目七 状态管理与安全管理
    • 7.1 任务一 使用多种方式进行状态管理
      • 7.1.1 案例一 使用Application统计网站的访问情况
      • 7.1.2 案例二 Session存储信息
      • 7.1.3 案例三 Cookie记录访问页面的次数
      • 7.1.4 案例四 使用ViewState保存用户单击按钮次数
    • 7.2 任务二 身份验证和授权
    • 7.3 任务三 根据数据库中的值进行验证和窗体身份验证
      • 7.3.1 案例一 数据库验证和窗体身份验证
    • 7.4 任务四 通过IIS进行保护站点
  • 8 项目八 WebService、模块与一般处理程序
    • 8.1 任务一 创建Web Service
      • 8.1.1 案例一 创建手机归属地查询
    • 8.2 任务二 调用Web Service
      • 8.2.1 案例一 调用服务查询手机归属地
    • 8.3 任务三 HttpHandle的使用
      • 8.3.1 案例一 实现页面验证码
      • 8.3.2 案例二 实现全站图片加水印
    • 8.4 任务四 HttpModule的使用
      • 8.4.1 案例一 实现站点访问控制
  • 9 项目九 调试及打包与部署
    • 9.1 任务一 调试与错误处理
      • 9.1.1 拓展一 调试技术
    • 9.2 任务二 Web程序的发布
  • 10 电子商务网站系统开发
    • 10.1 易泽数码商城项目
      • 10.1.1 易泽数码商城登录
      • 10.1.2 易泽数码商城注册
      • 10.1.3 易泽数码商城会员管理
      • 10.1.4 易泽数码商城商品管理
      • 10.1.5 易泽数码商城项目提交
任务三 使用DataReader读取数据
  • 1 任务三 使用D...
  • 2 补充知识

使用DataReader读取数据

通过任务三学习,你需要掌握和了解以下内容:

1.掌握DataReader对象及使用

2.学会制作用户信息更新功能

【任务要点】

DataReader对象及使用

【案例一】

完成用户信息更新页面的制作

前面已经学习了如何将新用户添加到数据库中,学习了如何检索信息,接下来要学习的是如何更新数据。在YiZeShopTest应用程序中,需要更改用户的个人信息——有人来到站点并使用用户名和密码登录网站后,能够在一个页面中看到自己的信息并能够进行修改。实例运行结果如下所示。


ChangeUserInfo页面(用户信息更改页面

【具体步骤】

  (1)打开本项目新建ChangeUserInfo.aspx用户信息更改页面。用户注册页面与用户信息更改页面稍有不同:

①将输入密码的文本框tbPwdtbPwd1TextMode(文本框的行为模式)设为“SingleLine”;

②将按钮btnReg的ID属性设为“btnChange”,Text属性设为“更新”;

③页面顶部图片改为“images/ChangeUser.jpg”。

更改后的ChangeUserInfo.aspx窗体如图下所示。

(  (2)当该窗体加载的时候,会根据用户登录后保存在Session["user"]中的用户ID检索用户信息,并使用检索出的用户信息来预加载窗体,为了更好的组织代码此时创建一个名为showUserInfo()的私有进程,代码如下:


在之前的5.2的登录页面中登录成功我们需要把用户ID保存在session中。代码如下


(另一种参考)

自定义的私有进程,执行显示用户信息的操作

showUserInfo的代码如下:


(另一种参考)

(3)在单击【重置】按钮时调用私有进程showUserInfo()重新显示用户信息。

(4)为更新按钮添加事件处理程序,该按钮将负责构建和执行SQL UPDATE语句(该语句将根据用户的ID号更新数据库中的用户信息)。


修改后数据库的结果

(另一种参考)

(5)保存和编译该项目。

【背景知识】

DataReader对象及使用

DataReader对象提供了基于连接的数据存储访问方式,以只向前移动的、只读的格式访问数据源中的数据。很多时候,用户只是希望简单地浏览数据,而不需要以随机的方式(即前后移动或根据索引访问)来访问数据,也不需要更改数据,ADO.NET的DataReader对象是专门为此设计的。因为DataReader只执行读操作,而且每次只在内存中存储一行数据,所以利用DataReader比利用DataSet的速度要快,增强了应用程序的性能,减少了系统的开销。如果要检索大量的数据,且并不需要写数据和随机访问功能,DataReader会是一个很好的选择。

1.DataReader对象的常用方法

(1)Read:该方法使记录指针前进到结果集中的下一个记录中。这个方法必须在读取数据之前调用,以便把记录指针指向第一行。记录指针指向哪条记录,哪条记录即为当前记录。

当Command对象的ExecuteReader方法返回DataReader对象时,当前记录指针指向第一条记录的前面,必须调用Read方法把记录指针移动到第一条记录,然后第一条记录变成当前记录。当移动到最后一条记录时,Read方法将返回值False。只要Read方法的返回值是True,就可以访问当前记录中包含的字段。

(2)GetValue:该方法根据指定列的索引来返回当前记录行的指定字段的值,如GetValue(0)。返回值的类型为Object。

(3)GetValues:把当前记录行中的数据保存一个数组中。可以通过DataReader的FieldCount属性获得字段的数量,从而定义数组的大小。

(4)GetString,GetInt32,GetChar等:这些方法根据指定列的索引,返回当前记录中指定字段的值,返回值的类型由所调用的方法决定。例如,GetChar返回字符型数据。如果把返回值赋予错误的类型变量,将会引发异常。

(5)NextResult:把记录指针移动到下一个结果集,即移动到下一结果集中的第一行之前的位置,如果要选择第一行,仍然必须调用Read方法。在使用Command对象生成DataReader对象时,Command对象的CommandText属性可以指定为用“”(分号)隔开的多个select语句,这样就可以为DataReader生成多个结果集。

(6)GetDataTypeName:通过输入列索引,获得该列的类型。

(7)GetName:通过输入列索引,获得该列的名称。

(8)IsDBNull:IsDBNull(int i)方法的参数用来指定列的索引号,该方法用来判断指定索引号的列的值是否为空,返回True或False。

     (9)Close:关闭DataReader对象。

2.DataReader对象的常用属性

(1)FieldCount:读取当前行中的列数。

(2)HasRows:只读,表示DataReader是否包含一行或多行数据。

(3)IsClosed:读取DataReader是否关闭。

3.DataReader对象的创建与关闭

(1)DataReader对象的创建

 DataReader对象的创建可由其构造函数创建,亦可由Command对象(SqlCommand或OleDbCommand类)的ExecuteReader方法创建。若Command对象属于SqlCommand类,则该方法返回的是SqlDataReader对象;若Command对象属于OleDbCommand类,则该方法返回的是OleDbDataReader对象。

在ADO.NET中,一个单一的连接(即一个Connection对象)每次只能打开一个DataReader。如果想要在相同的数据存储区上同时打开两个DataReader类,就必须显式地创建两个连接,每个DataReader各占用一个连接。

(2)DataReader对象的关闭

DataReader是基于连接的数据存储访问方式,即在访问数据的时候,DataReader要求连接一直处于打开状态。如果数据访问的操作可能花费较长的时间,则DataReader必须长时间处于打开状态。因此,底层的连接也必须长时间地保持打开状态。因为DataReader使用底层的连接,在DataReader打开的状态下,不能使用该连接执行其他的任务,即当DataReader打开以后,DataReader就会以独占的方式使用Connection对象,在关闭DataReader以前,将无法对Connection对象执行任何命令。所以,当阅读完数据时或不再使用DataReader时,要记住关闭DataReader。此外,要访问相关Command对象的任何输出参数或返回值时,也必须在关闭DataReader后才可行。