项目五掌握ASPNET数据库操作课件_第1页
项目五掌握ASPNET数据库操作课件_第2页
项目五掌握ASPNET数据库操作课件_第3页
项目五掌握ASPNET数据库操作课件_第4页
项目五掌握ASPNET数据库操作课件_第5页
已阅读5页,还剩203页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

项目五掌握ASP.NET数据库操作任务一制作EShopTest网上购物商城用户注册页面

任务二使用Command执行数据库命令

任务三使用DataReader读取数据

任务四使用DataAdapter读写数据

任务五使用DataSet

任务六使用DataList控件

任务七使用GridView控件项目五掌握ASP.NET数据库操作任务一制作EShopT任务一制作EShopTest网上购物商城用户注册页面【任务要点】操作数据库的第一步必须是先建立与数据库的连接。Connection对象专门肩负着这样的重任。该对象提供了很多属性和方法以便用户顺利进行连接操作。接下来开始通过实例学习Connection对象及使用。【案例1】测试与SQLServer数据库建立连接下一页返回任务一制作EShopTest网上购物商城用户注册页面【任务任务一制作EShopTest网上购物商城用户注册页面【具体步骤】(1)打开VisualStudio2005新建网站EShopTest,位置选择文件系统,指定站点文件夹。(2)添加Web窗体并命名为ConnectionTest。(3)从工具箱中拖一个Label控件到窗体中,并命名该控为lblMessage。(4)转到窗体的代码视图,在代码中添加引用usingSystem.Data.SqlClient。(5)双击新建窗体的空白处,在窗体的Page_Load()事件中添加如下代码:下一页返回上一页任务一制作EShopTest网上购物商城用户注册页面【具体步任务一制作EShopTest网上购物商城用户注册页面protectedvoidPage_Load(objectsender,EventArgse){SqlConnectionconn=newSqlConnection();conn.ConnectionString="server=zhubaiming\\sql2000;uid=sa;pwd=sa;database=EShop";conn.Open();lblMessage.Text=conn.State.ToString();conn.Close();}下一页返回上一页任务一制作EShopTest网上购物商城用户注册页面prot任务一制作EShopTest网上购物商城用户注册页面【案例2】实现用户注册页面的功能在项目四的能力大比拼中,已经完成了一个名为Register.aspx页面的制作,在设计模式下界面如图5-2所示。本窗体用于接收用户输入的数据。但是,这样的窗体在用户将数据保存起来之前,是没有多少用处的,接下来就是现在将要完成的任务,当单击【注册】按钮的时候执行代码将数据保存到数据库中。本项目使用的数据库EShop应用程序中的SQLServer数据库。EShopTest程序中所使用到的表的结构见表5-1~表5-4。实例运行结果如图5-3所示。下一页返回上一页任务一制作EShopTest网上购物商城用户注册页面【案例2任务一制作EShopTest网上购物商城用户注册页面【具体步骤】(1)在EShopTest应用程序中打开Register.aspx页。(2)在后台编码文件的顶部添加下列导入语句,因为此处将用到这些命名空间中的类:usingSystem.Data.SqlClient;(3)为注册按钮添加事件处理程序,以前该控件只是为了测试用于验证的不同文本框的内容。现在,该按钮将负责构建和执行SQLINSERT语句(该语句将一条新用户记录添加到数据库中)。下一页返回上一页任务一制作EShopTest网上购物商城用户注册页面【具体步任务一制作EShopTest网上购物商城用户注册页面【背景知识】一、相关命名空间的引用1.System.Data命名空间在程序中,要使用ADO.NET对象模型中的类时,必须首先引用System.Data这个命名空间。因为System.Data这个命名空间中包括大部分组成ADO.NET架构的基础对象类别,例如,DataSet对象、DataTable对象、DataColumn对象、DataRelation对象。2.System.Data.OleDb命名空间当要使用OLEDB数据提供都来存取数据时,必须引用System.Data.OleDb这个命名空间。System.Data.OleDb这个命名空间定义了OLEDB数据操作组件的对象类别,例如,OleDbConnection类、OleDbCommand类、OleDbDataAdapter类及OleDbDataReader类。下一页返回上一页任务一制作EShopTest网上购物商城用户注册页面【背景知任务一制作EShopTest网上购物商城用户注册页面3.System.Data.SqlClient命名空间当要使用SQLServer数据提供者存取数据时,必须引用System.Data.SqlClient这个命名空间。System.Data.SqlClient这个命名空间定义了SQL数据操作组件的对象类别,例如,SqlConnection类、SqlCommand类、SqlDataAdapter类及SqlDataReader类。

表5-5简要列举了.NET框架中与ADO.NET相关的几个命名空间。下一页返回上一页任务一制作EShopTest网上购物商城用户注册页面3.Sy任务一制作EShopTest网上购物商城用户注册页面二、Connection对象及使用Connection对象主要用于建立与指定数据源的连接,处理访问数据源时所需要的安全设置。如果没有利用Connection对象将数据库打开,是无法从数据库中获取数据的。在这里介绍Connection对象常用的属性和方法。1.Connection对象的常用方法(1)Open():利用ConnectionString所指定的属性设置打开一个数据库连接。(2)Close():关闭与数据库的连接。(3)CreateCommand():创建并返回一个与Connection相关的Command对象。下一页返回上一页任务一制作EShopTest网上购物商城用户注册页面二、Co任务一制作EShopTest网上购物商城用户注册页面2.Connection对象的常用属性(1)ConnectionString:获取或者设置用于打开数据库的连接字符串。(2)ConnectionTimeout:在试图建立连接的过程中,获取在终止操作并产生错误之前等待的时间,也就是超时时间。(3)DataBase:取得在数据库服务器上要打开的数据库名。(4)DataSource:取得要连接的SQLServer实例的名称。(5)State:取得目前连接的状态。下一页返回上一页任务一制作EShopTest网上购物商城用户注册页面2.Co任务一制作EShopTest网上购物商城用户注册页面3.Connection对象的构造函数与Connection对象的创建Connection对象的创建是由其对应的构造函数构造完成的,但是,不同的数据提供者用不同的类及构造函数完成Connection对象的创建,在SQLServer数据提供者中用类SqlConnection的构造函数创建Connection对象,而在OLEDB数据提供者中用类OleDbConnection的构造函数创建Connection对象。

表5-6分别列出了SQLServer数据提供者中类SqlConnection的两个构造函数的原型及其功能。

表5-7分别型列出了OLEDB数据提供者中类OleDbConnection的两个构造函数的原型及其功能。下一页返回上一页任务一制作EShopTest网上购物商城用户注册页面3.Co任务一制作EShopTest网上购物商城用户注册页面4.连接字符串(1)连接到SQLServer数据库的连接字符串要连接一个数据库,需要指明要连接的数据库的种类、数据库服务器名称、数据库名称、登录用户名称以及密码等信息,这些信息就是连接字符串。连接字符串可以在Connection对象的ConnectionString属性里指定。(2)连接到Access2000数据库的连接字符串连接Access数据库机制与连接SQLServer的机制没太大的区别,只是要使用OLEDB数据提供者中的OleDbConnection类来定义Connection对象,且需要对连接字符串中的不同参数指定不同的值即可。下一页返回上一页任务一制作EShopTest网上购物商城用户注册页面4.连接任务一制作EShopTest网上购物商城用户注册页面5.Connection对象的打开和关闭创建一个Connection对象并指定一个连接字符串并没有打开一个指向数据库的物理连接,需要调用对象的Open方法来打开连接。Close方法用来关闭Connection对象。不关闭打开的连接会影响系统性能和对应用程序的操作,所以最好关闭连接。SqlConnection和OleDbConnection类提供Open和Close方法。返回上一页任务一制作EShopTest网上购物商城用户注册页面5.Co任务二使用Command执行数据库命令【任务要点】Command对象及使用【案例1】制作显示商品分类列表的页面实例运行结果如图5-4所示。【具体步骤】(1)在EShopTest应用程序中添加Web窗体并命名为Command_DataReader.aspx。(2)转到窗体的代码视图,添加引用usingSystem.Data.SqlClient。(3)在窗体的设计视图下双击页面空白处进入Page_Load()事件,在该事件中添加代码。下一页返回任务二使用Command执行数据库命令【任务要点】下一页返回任务二使用Command执行数据库命令【案例2】制作简单用户登录页面在项目四中,构建了一个名为Login.aspx的Web窗体,如图5-5所示。当提交登录页面的时候,会收到用户名和密码,此时需要检查这些值是否能够匹配数据库中的现有用户。而且需要从数据库中得到符合传入信息的用户ID,以便使用这个ID值来为当前用户检索不同的信息事项。一旦得到了有效的用户ID,需要告知ASP.NET用户已通过验证,可以让他们看到最初请求的页面。在该示例中,将把刚才讨论的内容运用到代码中,在登录按钮的处理程序中,将使用ExecuteScalar()方法来检索给定登录名和密码的用户ID值。运行后的效果如图5-6所示。下一页返回上一页任务二使用Command执行数据库命令【案例2】制作简单用户任务二使用Command执行数据库命令【具体步骤】(1)打开Login.aspx页面,双击【登录】按钮转向后台编码页面。(2)在页面的顶部位置添加命名空间usingSystem.Data.SqlClient;的引用。(3)在后台编码页中,按照课本中的代码来进行更改。下一页返回上一页任务二使用Command执行数据库命令【具体步骤】下一页返回任务二使用Command执行数据库命令【背景知识】Command对象及使用Command对象提供对数据源执行SQL命令的接口,可以用来对数据库发出一些指令。利用Command对象可调用SQL命令来返回数据、修改数据、运行存储过程,以及发送或者检索参数信息。这个对象架构在Connection对象上,即Command对象是通过连接到数据源的Connection对象来下达命令的。所以Connection连接到哪个数据库,Command对象的命令就下达到哪里。下一页返回上一页任务二使用Command执行数据库命令【背景知识】下一页返回任务二使用Command执行数据库命令1.Command对象的常用属性(1)Connection:该属性获取或设定Command对象对数据源的操作要通过哪个Connection对象,例如,如果想通过cn这个Connection对象对数据源进行数据操作,则可以将其Connection属性的值设置为cn,即cmd.Connection=cn(cmd为Command对象的一个实例)。(2)CommandType:获取或设置CommandText属性中的内容是SQL语句、数据表名称还是存储过程的名称。CommandType可以设置为以下三个值之一。①“CommandType.Text”(默认值)②“CommandType.TableDirect”③“CommandType.StoredProcedure”下一页返回上一页任务二使用Command执行数据库命令1.Command对象任务二使用Command执行数据库命令(3)CommandText:获取或设置在数据源中执行的SQL语句或存储过程。(4)CommandTimeout:获取或设置超时时间。2.Command对象的常用方法(1)ExecuteNonQuery():可以执行例如Transact_SQL的Insert、Delete、Update命令以及Set命令,并返回受命令影响的行数。(2)ExecuteReader():执行返回行的命令。(3)ExecuteScalar():从数据库中检索单个值。(4)ExecuteXmlReader():把CommandText发送给连接,构建一个XmlReader对象。(5)Cancel():取消了Command命令的执行。下一页返回上一页任务二使用Command执行数据库命令(3)CommandT任务二使用Command执行数据库命令3.Command对象的创建是由其对应的构造函数构造完成的,但是,不同的数据提供者用不同的类及其构造函数完成Command对象的构建,在SQLServer数据提供者中用类SqlCommand的构造函数创建Command对象,而在OLEDB数据提供者中用类OleDBCommand的构造函数创建Command对象。表5-9列出这两个类的4种构造函数的原型。4.ExecuteNonQuery方法Command对象的ExecuteNonQuery方法用来执行Insert、Update、Delete和其他没有返回值的SQL命令。当使用Insert、Update、Delete等SQL命令时,ExecuteNonQuery方法返回被命令影响的行数,对其他SQL命令执行的操作,ExecuteNonQuery方法返回-1。当Update和Delete命令执行的目标记录不存在时,ExecuteNonQuery方法只是返回0,而不构成错误。下一页返回上一页任务二使用Command执行数据库命令3.Command对象任务二使用Command执行数据库命令5.ExecuteScalar方法Command对象的ExecuteScalar方法执行一个SQL命令并返回结果集的第一行的第一列,如果结果集多于一行一列,它将忽略其余部分。需要注意的是,ExecuteScalar方法的返回值是Object类型,所以在使用返回值之前需要进行必要的强制类型转换。如果对象类型不匹配,系统将生成运行错误。提示类型转换无效。下一页返回上一页任务二使用Command执行数据库命令5.ExecuteSc任务二使用Command执行数据库命令6.ExecuteReader方法Command对象的ExecuteReader方法通过DataReader对象返回与SQL查询匹配的行。只要创建一个Connection对象,并为Command对象指定一个SQL查询,就可以调用Command对象的ExecuteReader方法,从数据源中检索数据。Command对象的ExecuteReader方法两种原型,二者都可以返回一个DataReader对象:(1)ExecuteReader();(2)ExecuteReader(CommandBehaviorbehavior)。返回上一页任务二使用Command执行数据库命令6.ExecuteRe任务三使用DataReader读取数据【任务要点】DataReader对象及使用【案例1】完成用户信息更新页面的制作前面已经学习了如何将新用户添加到数据库中,学习了如何检索信息,接下来要学习的是如何更新数据。在EShopTest应用程序中,需要更改用户的个人信息——有人来到站点并使用用户名和密码登录网站后,能够在一个页面中看到自己的信息并能够进行修改。实例运行结果如图5-7所示。下一页返回任务三使用DataReader读取数据【任务要点】下一页返回任务三使用DataReader读取数据【具体步骤】(1)打开本项目下任务一中的用户注册程序,将Register.aspx另存为名称是ChangeUserInfo.aspx的用户信息更改页面。用户注册页面与用户信息更改页面稍有不同,须做如下更改:①将输入密码的文本框tbPwd和tbPwd1的TextMode(文本框的行为模式)设为“SingleLine”;②将按钮btnReg的ID属性设为“btnChange”,Text属性设为“更新”;③页面顶部图片改为“images/ChangeUser.jpg”。更改后的ChangeUserInfo.aspx窗体如图5-8所示。下一页返回上一页任务三使用DataReader读取数据【具体步骤】下一页返回任务三使用DataReader读取数据(2)当该窗体加载的时候,会根据用户登录后保存在Session[“user”]中的用户ID检索用户信息,并使用检索出的用户信息来预加载窗体,为了更好的组织代码此时创建一个名为showUserInfo()的私有进程,代码如下:protectedvoidPage_Load(objectsender,EventArgse){if(!IsPostBack){showUserInfo();}}自定义的私有进程,执行显示用户信息的操作下一页返回上一页任务三使用DataReader读取数据(2)当该窗体加载的时任务三使用DataReader读取数据(3)在单击【重置】按钮时调用私有进程showUserInfo()重新显示用户信息。(4)为更新按钮添加事件处理程序,该按钮将负责构建和执行SQLUPDATE语句(该语句将根据用户的ID号更新数据库中的用户信息)。(5)保存和编译该项目。下一页返回上一页任务三使用DataReader读取数据(3)在单击【重置】按任务三使用DataReader读取数据【背景知识】DataReader对象及使用DataReader对象提供了基于连接的数据存储访问方式,以只向前移动的、只读的格式访问数据源中的数据。很多时候,用户只是希望简单地浏览数据,而不需要以随机的方式(即前后移动或根据索引访问)来访问数据,也不需要更改数据,ADO.NET的DataReader对象是专门为此设计的。因为DataReader只执行读操作,而且每次只在内存中存储一行数据,所以利用DataReader比利用DataSet的速度要快,增强了应用程序的性能,减少了系统的开销。如果要检索大量的数据,且并不需要写数据和随机访问功能,DataReader会是一个很好的选择。下一页返回上一页任务三使用DataReader读取数据【背景知识】下一页返回任务三使用DataReader读取数据1.DataReader对象的常用方法(1)Read(2)GetValue(3)GetValues(4)GetString,GetInt32,GetChar等(5)NextResult(6)GetDataTypeName(7)GetName(8)IsDBNull(9)Close下一页返回上一页任务三使用DataReader读取数据1.DataReade任务三使用DataReader读取数据2.DataReader对象的常用属性(1)FieldCount:读取当前行中的列数。(2)HasRows:只读,表示DataReader是否包含一行或多行数据。(3)IsClosed:读取DataReader是否关闭。(1)DataReader对象的创建3.DataReader对象的创建与关闭DataReader对象的创建可由其构造函数创建,亦可由Command对象(SqlCommand或OleDbCommand类)的ExecuteReader方法创建。若Command对象属于SqlCommand类,则该方法返回的是SqlDataReader对象;若Command对象属于OleDbCommand类,则该方法返回的是OleDbDataReader对象。下一页返回上一页任务三使用DataReader读取数据2.DataReade任务三使用DataReader读取数据(2)DataReader对象的关闭DataReader是基于连接的数据存储访问方式,即在访问数据的时候,DataReader要求连接一直处于打开状态。如果数据访问的操作可能花费较长的时间,则DataReader必须长时间处于打开状态。因此,底层的连接也必须长时间地保持打开状态。因为DataReader使用底层的连接,在DataReader打开的状态下,不能使用该连接执行其他的任务,即当DataReader打开以后,DataReader就会以独占的方式使用Connection对象,在关闭DataReader以前,将无法对Connection对象执行任何命令。所以,当阅读完数据时或不再使用DataReader时,要记住关闭DataReader。此外,要访问相关Command对象的任何输出参数或返回值时,也必须在关闭DataReader后才可行。返回上一页任务三使用DataReader读取数据(2)DataRead任务四使用DataAdapter读写数据【任务要点】DataAdapter对象及使用【案例1】完成商品分类添加页面的制作在EShopTest应用程序中,新建一个用于添加商品分类的Web窗体。实例运行效果如图5-9所示。下一页返回任务四使用DataAdapter读写数据【任务要点】下一页返任务四使用DataAdapter读写数据【具体步骤】(1)在网站EShopTest中建立一个名为AddCategory.aspx的Web窗体。(2)在窗体中输入说明文字,添加一个TextBox控件更改其ID为txtCategory,添加Button控件更改其ID为btnAdd。(3)双击按钮控件,在自动生成的btnAdd_Click()事件中添加代码。下一页返回上一页任务四使用DataAdapter读写数据【具体步骤】下一页返任务四使用DataAdapter读写数据【案例2】完成商品分类导航窗体的制作EShopTest应用程序中,商品是该网站的主要内容,如果想方便准确地找到所需的商品,应该按商品的分类查找,下面所制作的就是显示商品分类列表的页面。该页面显示商品分类的链接,点击链接可转到显示该分类下的商品信息。实例运行效果如图5-10所示。【具体步骤】(1)在网站EShopTest中建立一个名为CategoryList.aspx的窗体。下一页返回上一页任务四使用DataAdapter读写数据【案例2】完成商品分任务四使用DataAdapter读写数据(2)在窗体中新建一个两行一列的表格,并将DataList控件从工具箱中拖到这个表格的第二行第一列中。该DataList的属性设置见表5-10。(3)CategoryList.aspx.cs中添加如下引用:usingSystem.Data.SqlClient;(4)当窗体加载的时候检索数据,并实现数据绑定。(5)在HTML代码中添加如下相关代码设计模式下界面如图5-11所示。下一页返回上一页任务四使用DataAdapter读写数据(2)在窗体中新建一任务四使用DataAdapter读写数据【背景知识】DataAdapter对象及使用DataAdapter对象主要是在Connection对象和DataSet对象之间执行数据传输的工作,这个对象架构在Command对象上。DataReader通过Command对象对数据源执行SQL命令,将数据填充到DataSet对象,以及把DataSet对象中的数据更新返回到数据源中。下一页返回上一页任务四使用DataAdapter读写数据【背景知识】下一页返任务四使用DataAdapter读写数据1.DataAdapter对象的常用方法(1)Update:根据保存在DataSet中的数据来更新数据源中的数据。(2)Fill:利用数据源中的数据填充或刷新DataSet,其返回值是加载到DataSet中的行数量。Fill方法使用DataAdapter对象的SelectCommand的结果来填充DataSet。具体是通过使用DataReader对象来隐式地返回用于在DataSet中创建的表的列名称及类型(表和列仅在不存在时创建,否则使用现有的DataSet架构),并填充DataSet中的表。下一页返回上一页任务四使用DataAdapter读写数据1.DataAdap任务四使用DataAdapter读写数据2.DataAdapter对象的常用属性(1)SelectCommand:从数据源中检索数据。(2)InsertCommand:向数据源中插入新的数据。(3)DeleteCommand:从数据源中删除数据。(4)UpdateCommand:更新数据源中的数据。下一页返回上一页任务四使用DataAdapter读写数据2.DataAdap任务四使用DataAdapter读写数据3.DataAdapter对象的构造函数与创建DataAdapter对象的创建是由其对应的构造函数完成的,但是,不同的数据提供者用不同的类及其构造函数完成DataAdapter对象的创建,在SQLServer数据提供者中用类SqlDataAdapter的构造函数创建DataAdapter对象,而在OLEDB数据提供者中用类OleDbDataAdapter的构造函数创建DataAdapter对象。表5-11分别列出这两个类的四种构造函数的原型。返回上一页任务四使用DataAdapter读写数据3.DataAdap任务五使用DataSet【任务要点】DataSet对象及使用【案例1】完成显示商品信息列表页面的制作实例运行效果如图5-12所示。点击商品分类名称后链接到商品列表页面,如图5-13所示。下一页返回任务五使用DataSet【任务要点】下一页返回任务五使用DataSet【具体步骤】(1)在网站中建立一个名为ProductList.aspx的Web窗体。(2)新一个布局表格,并将GridView控件从工具箱中拖到布局表格的第二行第一列中。(3)更改GridView的ID属性为grdvProductList。(4)单击GridView的Columns属性,弹出如图5-14所示的对话框。在对话框中添加字段,新添加的字段设置见表5-12。完成以上设置后在设计模式下网页界面如图5-15所示。(5)添加代码,用于当该页面加载的时候,根据传入的商品分类ID检索商品信息。下一页返回上一页任务五使用DataSet【具体步骤】下一页返回上一页任务五使用DataSet【案例2】制作一个显示商品名称列表的页面实例运行效果如图5-16所示。【具体步骤】(1)在网站中建立一个名为DataSetTest.aspx的页面。(2)在窗体中添加GridView控件,更改GridView的ID属性为gvTest。(3)双击设计视图下窗体的空白处,在自动生成的Page_Load()事件中添加代码。下一页返回上一页任务五使用DataSet【案例2】制作一个显示商品名称列表的任务五使用DataSet【背景知识】DataSet对象及使用1.DataSet对象的概念DataSet这个对象可以视为一个暂存区(Cache),它可以把从数据库中所查询到的数据保留起来,甚至可以将整个数据库暂存起来。DataSet是数据在内存中的表示形式。DataSet对象包含一组DataTable对象和DataRelation对象,DataTable对象中存储数据,由数据行(列)、主关键字、外关键字、约束等组成。DataRelation对象中存储各DataTable之间的关系。这意味着DataSet架构内所有的成员都非常对象化,方便更有弹性地来操作这些对象。下一页返回上一页任务五使用DataSet【背景知识】下一页返回上一页任务五使用DataSet2.向DataSet中填充数据的方法向DataSet中填充数据的方法有若干种,这些方法可以单独应用,也可以结合应用。主要方法有:(1)在DataSet对象中以编程方式创建DataTables、DataRelations和Constraints对象,并使用数据填充这些表;(2)通过DataAdapter对象用现有关系数据源中的数据表填充DataSet;(3)使用XML加载和保持DataSet内容。下一页返回上一页任务五使用DataSet2.向DataSet中填充数据的方法任务五使用DataSet3.DataSet对象的常用方法与数据更新(1)HasChanges:指出自从填充DataSet或最后一次调用AcceptChanges以后,DataSet中的行是否发生变化,该方法返回一个bool值。(2)GetChanges:该方法返回一个DataSet对象,实际上是创建了另一个DataSet,该DataSet只包含对数据作出的更改或者是具有可选状态的行。(3)AcceptChanges:接受DataSet中的所有表的变化,即行的标记都将设置为“未变化”。如果在调用DataAdapter的Update方法之前调用AcceptChanges,Update将不会发现任何标记为“被改动”的行,因此数据源将不会被更新。(4)RejectChanges:拒绝自从填充DataSet或最后一次调用AcceptChanges以后,DataSet上的所有变化。实际上,这个方法是通过把已改变的行还原为初始值,从而回滚更改操作。下一页返回上一页任务五使用DataSet3.DataSet对象的常用方法与数任务五使用DataSet4.访问DataSet对象中的数据表按名称引用(访问)DataSet中的表和关系是区分大小写的。一个DataSet中可以存在两个或更多个名称相同但大小写不同的表或关系。例如,可以有Table1和table1。在这种情况下,对其中一个表的按名称引用必须精确匹配该表名称的大小写,否则会引发异常。如果只存在一个具有特定名称的表或关系,则区分大小写规则不适用。也就是说,如果DataSet中没有其他任何表或关系对象匹配该特定表或关系对象的名称,那么即使大小写不同,仍可以按采用任何大小写的名称来引用该对象,而不会引发异常,例如,如果DataSet只包含Table1,则可以使用ds.Tables[“TABLE1”]来引用它。下一页返回上一页任务五使用DataSet4.访问DataSet对象中的数据表任务五使用DataSetDataSet提供了CaseSensitive属性,用于指定DataTable中的字符串比较是否区分大小写,该属性会应用于DataSet中的数据,它将影响排序、搜索、筛选、约束强制等,但不会影响对DataSet中表或关系名称的引用。5.DataSet对象与DataAdapter对象间的关系可以把DataSet对象看成是暂时存放资料的地方,它本身并不具备和数据源联机以及操作数据源的能力。如果想要将数据源的数据取回并存放在DataSet里面的DataTable中,则要通过数据操作组件才办得到。数据操作组件(ManagedProvider)就是由Connection、Command、DataAdapter以及DataReader下一页返回上一页任务五使用DataSetDa任务五使用DataSet这四个对象组成,其中DataSet对象和DataAdapter对象的关系最密切,因为DataAdapter对象是帮助DataSet对象和数据源沟通的桥梁;当DataSet对象通过DataAdapter对象来获取数据源的数据时,它会先依照数据在数据源中的架构产生一个DataTable对象,然后将数据源中的数据取回后填入DataRow对象,再将DataRow对象填加到DataTable的Rows集合,直到数据源中的数据取完为止。DataAdapter对象将数据源中的数据取出,并将这些数据都填入自己产生的DataTable对象后,立即将这个DataTable对象加入DataSet对象的DataTables集合,并结束和数据源的联机。返回上一页任务五使用DataSet这四个对象组成,其中D任务六使用DataList控件【任务要点】DataList控件可以在一个重复列表中显示数据项,并且还可以支持选择和编辑项目。可使用模板对显示的数据进行排版。【案例1】制作显示最新上架商品主要信息的页面运行结果如图5-17所示。下一页返回任务六使用DataList控件【任务要点】下一页返回任务六使用DataList控件【具体步骤】(1)在EShop中,新建了一个名为Default.aspx的Web窗体。(2)打开Default.aspx窗体,在窗体中新建一个两行一列的表格。(3)在窗体的设计视图下将DataList控件从工具箱中拖到布局表格的第二行中,更改ID为dlstNewProducts,设置RepeatColumns为3。此时效果如图5-18所示。(4)选中新添加的DataList并右击,弹出的快捷菜单如图5-19所示。此时选择【编辑模板】【项模板】命令。选择编辑模板后页面图如图5-20所示。(5)在ItemTemplate中插入布局表格,如图5-21所示。下一页返回上一页任务六使用DataList控件【具体步骤】下一页返回上一页任务六使用DataList控件(6)在ItemTemplate中布局表格的第一行插入一个Image控件和一个Label控件,分别将ID改为imgProduct和lblId,并调整Image控件大小。在第二行插入一个Label控件并更改ID为lblProductName。在第三行的第一列插入文字“市场价:”,在第二列插入一个Label控件和文字“元”,并更改Label控件的ID为lblMarketPrice。在第四行的第一列插入文字“会员价:”,在第二列插入一个Label控件和文字“元”,并更改Label控件的ID为lblMarketPrice。在第五行的第一列插入一个ImageButton控件更改ID为ibtnBuy。在第二列插入HTML图片更改ID为imgShow,并为其加链接为show.aspx?id=<%#Eval("ProId")%>。在表格下面插入一个LinkButton控件,更改其ID为lbtnType。(7)在SelectedItemTemplate中插入TextBox控件,更改其ID为tbox。在TextBox下面插入一个LinkButton控件,更改其ID为lbtnClose。此时页面效果如图5-22所示。下一页返回上一页任务六使用DataList控件(6)在ItemTemplat任务六使用DataList控件(8)下面来完成控件的属性设置及数据邦定:在ItemTemplate中的布局表格里添加的各控件的属性设置见表5-13。(9)设置完成后,在设计模式下的窗体如图5-23所示。(10)添加窗体的Page_Load()方法(11)添加dlstNewProducts的ItemCommand事件,在编辑模板的时候为购买商品按钮、显示商品型号链接分别添加了命令名称为“buy”,“type”。该事件就是根据这个命令执行对应的操作。下一页返回上一页任务六使用DataList控件(8)下面来完成控件的属性设置任务六使用DataList控件【背景知识】DataList控件(1)DataList控件的基本语法如下:<asp:DataListID=”DataList1”runat=”server”RepeatDirection=""RepeatColumns=""RepeatLayout=""DataKeyField=""OnEditCommand=""OnCancelCommand=""下一页返回上一页任务六使用DataList控件【背景知识】下一页返回上一页任务六使用DataList控件OnDeleteCommand=""OnUpdateCommand=""OnItemCommand="">模板列</asp:DataList>(2)在DataList控件中,ASP.NET也提供了7种模板列用来定义数据显示的内容和布局,具体参见表5-14。(3)在DataList中创建多列:DataList的一个好处是可以以多个列显示数据项。通过设置其RepeatColumns和RepeatDirection属性,可以控制DataList的列的布局。(4)捕获DataList控件中产生的事件下一页返回上一页任务六使用DataList控件OnDeleteCommand任务六使用DataList控件(5)选择DataList中的项(6)使用DataList控件中的DataKeys集合(7)编辑DataList中的项返回上一页任务六使用DataList控件(5)选择DataList中的任务七使用GridView控件【任务要点】使用GridView控件显示和操作数据。【案例1】制作商品分类信息管理页面在EShopTest网站后台能够对商品分类进行管理,在商品分类管理页面能够添加商品分类,并能够对已有的商品分类进行更改,删除过期的商品分类。制作完成后的网页运行结果如图5-24所示。下一页返回任务七使用GridView控件【任务要点】下一页返回任务七使用GridView控件【具体步骤】(1)在EShop项目下新建文件夹admin。(2)在admin文件夹里新建Web窗体class.aspx。(3)在设计模式下编辑页面,在页面的第一行输入“商品分类管理”,在第一行下面插入一个分隔线。(4)在分隔线下插入一个表格,并调整表格布局为两行一列。(5)在表格的第一行输入“输入分类名称:”,在输入文字的右边插入一个TextBox控件,并更改其ID为txtClass,在txtClass右边插入一个RequiredFieldValidator验证控件,更改其ID为valrClassName,ErrorMessage为“请输入类别!”,ControlToValidate属性设为“txtClass”,在rvClass右边插入一个Button控件,并更改其ID为btnSave,更改其Text属性为“保存”。下一页返回上一页任务七使用GridView控件【具体步骤】下一页返回上一页任务七使用GridView控件(6)在表格的第二行插入一个GridView控件。更改新插入GridView控件的ID为gvClass。设置AllowPaging属性为True,设置PageSize属性为10。设置AutoGenerateColumns属性为False。设置DataKeysName为id。此时设计模式下页面如图5-25所示。(7)单击选中gvClass。单击Columns属性,弹出如图5-26所示的对话框。(8)添加两个BoundField,设置第一个BoundField的DataField属性为id,HeaderText属性设为“编号”,ReadOnly属性设为True。设置第二个BoundField的DataField属性为Category,HeaderText属性为“分类”。添加一个CommandField下面的“编辑、更新、取消”字段,设置其HeaderText属性为“编辑”,设置CausesValidation属性为False。再添加一个CommandField下面的“删除”,设置其HeaderText属性为“删除”。完成列设置后的页面如图5-27所示。下一页返回上一页任务七使用GridView控件(6)在表格的第二行插入一个G任务七使用GridView控件(9)新建一个过程完成gvClass的数据邦定。在代码页新建一个数据邦定过程。(10)编写完成数据操作的过程,根据传入参数SQL语句对数据进行操作。(11)添加btnSave按钮的Click事件并编写代码完成分类的添加。(12)添加gvClass编辑的相关事件并编写代码实现记录编辑功能。(13)添加gvClass的RowDeleting事件,并编写代码实现记录删除功能。(14)添加gvClass的PageIndexChanging事件,并编写代码实现记录分页显示功能。下一页返回上一页任务七使用GridView控件(9)新建一个过程完成gvCl任务七使用GridView控件【背景知识】GridView控件一、方法:DataBind它是很简单、最常用的方法。用于绑定数据。需要注意的只有一点:执行了这个方法后,GridView(由于GridView和DataList极为相似,所以下面的介绍虽然是针对GridView,但与DataList也相差不远)里面所有的显示绑定数据的控件,都会显示DataSource里的数据,其余控件也将初始化成.aspx里设计的状态。下一页返回上一页任务七使用GridView控件【背景知识】下一页返回上一页任务七使用GridView控件二、属性1.DataSource有DataBind的地方,就应该有DataSource。如果没有指定DataSource而执行DataBind,那GridView将什么也不会显示。DataSource一般是DataSet、DataTable或者DataView。当然也可以绑定DataReader或者其他实现IEnumerable的类。2.DataKeyField,DataKeys在GridView中定位一行之后,如果想知道这行在数据表里的位置,至少有五种方法可以做到这一点,设置GridView的DataKeyField就是这几种方法之一。下一页返回上一页任务七使用GridView控件二、属性下一页返回上一页任务七使用GridView控件3.EditItemIndex,SelectedIndex,CurrentPageIndex,SelectedItem这些属性看名字就能理解其意义,需要注意的是,设置了EditItemIndex或者CurrentPageIndex后需要重新执行DataBind方法(前面提到过,还需要设置DataSource)。4.ColumnsColumns就是Column列的集合,可以设置列的属性,包括Visible、HeaderText、FooterText、SortExpression等。5.ItemsItems是GridViewItem的集合,可以遍历当前GridView中显示数据的GridViewItem。GridViewItem每一个GridViewItem就是GridView中显示的一行,其中包括:下一页返回上一页任务七使用GridView控件3.EditItemIndex任务七使用GridView控件HeaderGridView控件的标题部分ItemGridView控件中的项AlternatingItemGridView控件中的交替项SelectedItemGridView控件中的选定项(由SelectedIndex设置,通过SelectedItem属性或者Items[SelectedIndex]来读取)EditItemGridView控件中处于编辑状态的项(由EditItemIndex设置,通过Items[EditItemIndex]来读取)SeparatorGridView控件中项之间的分隔符FooterGridView控件的脚注部分PagerGridView控件的页选择节下一页返回上一页任务七使用GridView控件HeaderGridView任务七使用GridView控件下面介绍GridViewItem的属性。ItemIndex——得到行在Items中的索引。ItemType——返回行的类型,也就是上面列出的Header、Item、…、Pager。Cells——返回行包含的所有TableCell(不管是显示声明的,还是自动生成的;不管是可以看见的,还是隐藏掉的),通过TableCell,可以读取Cell中显示的文本、包含的控件。下一页返回上一页任务七使用GridView控件下面介绍GridViewIte任务七使用GridView控件三、事件1.ItemCommand、CancelCommand、DeleteCommand、EditCommand、UpdateCommand也就是在GridView中,单击Button、LinkButton后执行的事件,执行的事件取决于按钮的CommandName。其实最主要的一个是ItemCommand,而后面四个都只是ItemCommand的一小部分,比如一个按钮的CommandName为“Cancel”,当返回后,首先执行的是ItemCommand事件,然后才是CancelCommand事件。2.PageIndexChanged如果GridView是分页的,那在GridView上单击Pager上的1、2、3或者<、>时,就会激发这个事件。在这个事件里面,可以用e.NewPageIndex来读取要改变的页,然后赋值给GridView的CurrentPageIndex属性,最后要记得设置DataSource和执行DataBind。下一页返回上一页任务七使用GridView控件三、事件下一页返回上一页任务七使用GridView控件3.ItemDataBound,ItemCreated首先要说的是这两个事件的发生时间。只要执行了DataBind方法,就会马上激发ItemDataBound事件。如果页面是第一次访问(Page.IsPostBack=false),那在第一次执行DataBind的时候,会先激发ItemCreated事件,也就是说,执行了DataBind后,首先会用ItemCreated来建立Header行,然后用ItemDataBound来绑定Header行,再用ItemCreated来建立第一行,再调用ItemDataBound来绑定第一行,也就是说ItemCreated和ItemDataBound是交替执行的。页面返回时,在Page_Load之前,也会执行ItemCreated事件,但是这时候就不会再执行ItemDataBound事件了。所以,如果想在GridView里动态添加什么控件,就需要在ItemCreated事件中执行,而不是在ItemDataBound事件中。返回上一页任务七使用GridView控件3.ItemDataBound表5-1UserInfo(用户信息表)返回下一页表5-1UserInfo(用户信息表)返回下一页表5-2Category(商品目录表)返回下一页上一页表5-2Category(商品目录表)返回下一页上一页表5-3Product(商品信息表)返回下一页上一页表5-3Product(商品信息表)返回下一页上一页表5-4Administrator(管理员信息表)返回上一页表5-4Administrator(管理员信息表)返回上一表5-5ADO.NET相关的命名空间返回表5-5ADO.NET相关的命名空间返回表5-6SqlConnection类的两个构造函数及对应的功能返回表5-6SqlConnection类的两个构造函数及对应的表5-7OleDbConnection类的两个构造函数及对应的功能返回表5-7OleDbConnection类的两个构造函数及对表5-9SqlCommand类与OleDBCommand类的4种构造函数返回表5-9SqlCommand类与OleDBCommand类表5-10DataList属性设置返回表5-10DataList属性设置返回表5-11SqlDataAdapter类与OleDbDataAdapter类的构造函数的原型返回表5-11SqlDataAdapter类与OleDbDat表5-12GridView字段设置表返回表5-12GridView字段设置表返回表5-13ItemTemplate布局表格中添加的各控件的属性设置返回表5-13ItemTemplate布局表格中添加的各控件的表5-14DataList控件模板返回表5-14DataList控件模板返回图5-2用户注册窗体设计视图返回图5-2用户注册窗体设计视图返回图5-3用户注册页面返回图5-3用户注册页面返回图5-4显示商品分类的名称返回图5-4显示商品分类的名称返回图5-5会员登录窗体返回图5-5会员登录窗体返回图5-6会员登录页面返回图5-6会员登录页面返回图5-7用户信息更改页面返回图5-7用户信息更改页面返回图5-8用户信息更改设计窗体返回图5-8用户信息更改设计窗体返回图5-9添加商品分类页面返回图5-9添加商品分类页面返回图5-10商品分类页面返回图5-10商品分类页面返回图5-11商品分类列表设计返回图5-11商品分类列表设计返回图5-12商品分类页面返回图5-12商品分类页面返回图5-13商品详细列表页面返回图5-13商品详细列表页面返回图5-14GridView属性设置对话框返回图5-14GridView属性设置对话框返回图5-15设计视图下商品列表窗体返回图5-15设计视图下商品列表窗体返回图5-16快速手工建立DataSet返回图5-16快速手工建立DataSet返回图5-17商品展示页面返回图5-17商品展示页面返回图5-18最新上架页面设计模式图返回图5-18最新上架页面设计模式图返回图5-19DataList编辑模板(1)返回图5-19DataList编辑模板(1)返回图5-20DataList编辑模板(2)返回图5-20DataList编辑模板(2)返回图5-21DataList编辑模板(3)返回图5-21DataList编辑模板(3)返回图5-22DataList编辑模板(4)返回图5-22DataList编辑模板(4)返回图5-23设置完成后在设计模式下的窗体返回图5-23设置完成后在设计模式下的窗体返回图5-24商品分类编辑页面返回图5-24商品分类编辑页面返回图5-25GridView设计图(1)返回图5-25GridView设计图(1)返回图5-26GridView设计图(2)返回图5-26GridView设计图(2)返回图5-27GridView设计图(3)返回图5-27GridView设计图(3)返回项目五掌握ASP.NET数据库操作任务一制作EShopTest网上购物商城用户注册页面

任务二使用Command执行数据库命令

任务三使用DataReader读取数据

任务四使用DataAdapter读写数据

任务五使用DataSet

任务六使用DataList控件

任务七使用GridView控件项目五掌握ASP.NET数据库操作任务一制作EShopT任务一制作EShopTest网上购物商城用户注册页面【任务要点】操作数据库的第一步必须是先建立与数据库的连接。Connection对象专门肩负着这样的重任。该对象提供了很多属性和方法以便用户顺利进行连接操作。接下来开始通过实例学习Connection对象及使用。【案例1】测试与SQLServer数据库建立连接下一页返回任务一制作EShopTest网上购物商城用户注册页面【任务任务一制作EShopTest网上购物商城用户注册页面【具体步骤】(1)打开VisualStudio2005新建网站EShopTest,位置选择文件系统,指定站点文件夹。(2)添加Web窗体并命名为ConnectionTest。(3)从工具箱中拖一个Label控件到窗体中,并命名该控为lblMessage。(4)转到窗体的代码视图,在代码中添加引用usingSystem.Data.SqlClient。(5)双击新建窗体的空白处,在窗体的Page_Load()事件中添加如下代码:下一页返回上一页任务一制作EShopTest网上购物商城用户注册页面【具体步任务一制作EShopTest网上购物商城用户注册页面protectedvoidPage_Load(objectsender,EventArgse){SqlConnectionconn=newSqlConnection();conn.ConnectionString="server=zhubaiming\\sql2000;uid=sa;pwd=sa;database=EShop";conn.Open();lblMessage.Text=conn.State.ToString();conn.Close();}下一页返回上一页任务一制作EShopTest网上购物商城用户注册页面prot任务一制作EShopTest网上购物商城用户注册页面【案例2】实现用户注册页面的功能在项目四的能力大比拼中,已经完成了一个名为Register.aspx页面的制作,在设计模式下界面如图5-2所示。本窗体用于接收用户输入的数据。但是,这样的窗体在用户将数据保存起来之前,是没有多少用处的,接下来就是现在将要完成的任务,当单击【注册】按钮的时候执行代码将数据保存到数据库中。本项目使用的数据库EShop应用程序中的SQLServer数据库。EShopTest程序中所使用到的表的结构见表5-1~表5-4。实例运行结果如图5-3所示。下一页返回上一页任务一制作EShopTest网上购物商城用户注册页面【案例2任务一制作EShopTest网上购物商城用户注册页面【具体步骤】(1)在EShopTest应用程序中打开Register.aspx页。(2)在后台编码文件的顶部添加下列导入语句,因为此处将用到这些命名空间中的类:usingSystem.Data.SqlClient;(3)为注册按钮添加事件处理程序,以前该控件只是为了测试用于验证的不同文本框的内容。现在,该按钮将负责构建和执行SQLINSERT语句(该语句将一条新用户记录添加到数据库中)。下一页返回上一页任务一制作EShopTest网上购物商城用户注册页面【具体步任务一制作EShopTest网上购物商城用户注册页面【背景知识】一、相关命名空间的引用1.System.Data命名空间在程序中,要使用ADO.NET对象模型中的类时,必须首先引用System.Data这个命名空间。因为System.Data这个命名空间中包括大部分组成ADO.NET架构的基础对象类别,例如,DataSet对象、DataTable对象、DataColumn对象、DataRelation对象。2.System.Data.OleDb命名空间当要使用OLEDB数据提供都来存取数据时,必须引用System.Data.OleDb这个命名空间。System.Data.OleDb这个命名空间定义了OLEDB数据操作组件的对象类别,例如,OleDbConnection类、OleDbCommand类、OleDbDataAdapter类及OleDbDataReader类。下一页返回上一页任务一制作EShopTest网上购物商城用户注册页面【背景知任务一制作EShopTest网上购物商城用户注册页面3.System.Data.SqlClient命名空间当要使用SQLServer数据提供者存取数据时,必须引用System.Data.SqlClient这个命名空间。System.Data.SqlClient这个命名空间定义了SQL数据操作组件的对象类别,例如,SqlConnection类、SqlCommand类、SqlDataAdapter类及SqlDataReader类。

表5-5简要列举了.NET框架中与ADO.NET相关的几个命名空间。下一页返回上一页任务一制作EShopTest网上购物商城用户注册页面3.Sy任务一制作EShopTest网上购物商城用户注册页面二、Connection对象及使用Connection对象主要用于建立与指定数据源的连接,处理访问数据源时所需要的安全设置。如果没有利用Connection对象将数据库打开,是无法从数据库中获取数据的。在这里介绍Connection对象常用的属性和方法。1.Connection对象的常用方法(1)Open():利用ConnectionString所指定的属性设置打开一个数据库连接。(2)Close():关闭与数据库的连接。(3)CreateCommand():创建并返回一个与Connection相关的Command对象。下一页返回上一页任务一制作EShopTest网上购物商城用户注册页面二、Co任务一制作EShopTest网上购物商城用户注册页面2.Connection对象的常用属性(1)ConnectionString:获取或者设置用于打开数据库的连接字符串。(2)ConnectionTimeout:在试图建立连接的过程中,获取在终止操作并产生错误之前等待的时间,也就是超时时间。(3)DataBase:取得在数据库服务器上要打开的数据库名。(4)DataSource:取得要连接的SQLServer实例的名称。(5)State:取得目前连接的状态。下一页返回上一页任务一制作EShopTest网上购物商城用户注册页面2.Co任务一制作EShopTest网上购物商城用户注册页面3.Connection对象的构造函数与Connection对象的创建Connection对象的创建是由其对应的构造函数构造完成的,但是,不同的数据提供者用不同的类及构造函数完成Connection对象的创建,在SQLServer数据提供者中用类SqlConnection的构造函数创建Connection对象,而在OLEDB数据提供者中用类OleDbConnection的构造函数创建Connection对象。

表5-6分别列出了SQLServer数据提供者中类SqlConnection的两个构造函数的原型及其功能。

表5-7分别型列出了OLEDB数据提供者中类OleDbConnection的两个构造函数的原型及其功能。下一页返回上一页任务一制作EShopTest网上购物商城用户注册页面3.Co任务一制作EShopTest网上购物商城用户注册页面4.连接字符串(1)连接到SQLServer数据库的连接字符串要连接一个数据库,需要指明要连接的数据库的种类、数据库服务器名称、数据库名称、登录用户名称以及密码等信息,这些信息就是连接字符串。连接字符串可以在Connection对象的ConnectionString属性里指定。(2)连接到Access2000数据库的连接字符串连接Access数据库机制与连接SQLServer的机制没太大的区别,只是要使用OLEDB数据提供者中的OleDbConnection类来定义Connection对象,且需要对连接字符串中的不同参数指定不同的值即可。下一页返回上一页任务一制作EShopTest网上购物商城用户注册页面4.连接任务一制作EShopTest网上购物商城用户注册页面5.Connection对象的打开和关闭创建一个Connection对象并指定一个连接字符串并没有打开一个指向数据库的物理连接,需要调用对象的Open方法来打开连接。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论