版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
应用程序数据访问项目四使用ADO.NET实现数据访问应用程序数据访问项目四使用ADO.NET实现数据访问主要内容任务1用户身份验证任务2商品信息查询任务3商品信息管理任务4购物车的实现主要内容任务1用户身份验证任务2商品信息查询任务3应用程序数据访问任务1用户身份验证应用程序数据访问任务1用户身份验证任务场景在B2C的电子商务网站中,用户身份验证通常应用在前台会员登录和后台管理登录。在前台只有登录成功的会员才能够购买商品、发表留言和评论;在后台只有具有合法身份的管理员才能够登录系统进行商品维护、会员维护及系统维护等操作。本任务使用ADO.NET组件中的Connection对象、Command对象和DataReader对象,轻松实现应用程序连接数据库,实现后台管理的身份验证。任务场景在B2C的电子商务网站中,用户身份验证通常应用在前台ADO.NET数据访问技术ADO.NET组成使用ADO.NET访问数据使用Connection对象连接数据库编写代码创建数据库连接使用Web.Config文件定义数据连接字符串连接式数据访问模式操作数据库Command对象使用Command对象操作数据DataReader对象读取器知识要点ADO.NET数据访问技术知识要点4.1ADO.NET数据访问技术一种将Microsoft.NET的Web应用程序以及MicrosoftWindows应用程序连接到诸如SQLServer数据库或XML文件等数据源的技术。专门为Internet无连接的工作环境而设计,它提供了一种简单而灵活的方法,便于开发人员把数据访问和数据处理集成到Web应用程序中。4.1ADO.NET数据访问技术一种将Microsoft.ADO.NET组成ADO.NET包括两个核心组件:.NETFramework数据提供程序和DataSet数据集。数据提供程序数据提供程序用于连接到数据库、执行命令和检索结果。数据提供程序中包含的核心对象对象说明Connection建立与数据源的连接Command对数据源执行操作命令DataReader从数据源中读取只进且只读的数据流DataAdapter使用Connection对象建立DataSet与数据提供程序之间的链接;并协调对DataSet中数据的更新4.1ADO.NET数据访问技术ADO.NET组成对象说明ConnectioADO.NET组成.NETFramework提供了5个数据提供程序:SQLServer.NETFramework数据提供程序OLEDB.NETFramework数据提供程序ODBC.NETFramework数据提供程序Oracle.NETFramework数据提供程序EntityClient4.1ADO.NET数据访问技术ADO.NET组成4.1ADO.NET数据访问技术ADO.NET组成DataSet对象用于存储从数据源中收集的数据。处理存储在DataSet中的数据并不需要ASP.NET
Web窗体与数据源保持连接,仅当数据源中的数据随着改变而被更新的时候,才会重新建立连接。与DataSet相关的对象对象说明DataSet数据在内存中的缓存DataTable内存中存放数据的表DataRowDataTable中的行DataColumnDataTable中的列4.1ADO.NET数据访问技术ADO.NET组成对象说明DataSet数据4.1.2使用ADO.NET访问数据ADO.NET提供了一组丰富的对象,用于对任何种类的数据存储的连接式或断开式访问。在连接式数据访问模式下,连接会在程序的整个生存周期中保持打开,而不需要对状态进行特殊处理。
断开方式数据访问模式可以为应用程序提供良好的性能和伸缩性学习提示:实际应用中,选择数据访问模式的基本原则是首先满足需求,然后考虑性能优化。4.1.2使用ADO.NET访问数据ADO访问数据库的第一项工作就是和数据库建立连接,然后通过该连接向数据库发送命令并读取返回的数据,这些在ADO.NET中由Connection对象来实现。Connection对象使用Web.Config文件定义数据连接字符串4.2使用Connection对象连接数据库访问数据库的第一项工作就是和数据库建立连接,然后通过该连接向Connection对象在.NETFramework中表示到数据库的连接类是System.Data.Common.DbConnection抽象类。对应不同的数据提供程序,从DbConnection派生了一组数据连接类分别是OleDBConnetion、OdbcConntion、OracleConnection、SqlConnection、EntityConnection,这些类的属性方法大致相同。ConnectionString属性包括。属性名称默认值说明Server/DataSource本地机器要连接的SQLServer实例的名称或网络地址。指定本地实例时,使用(local)InitialCatalog/Database默认数据库数据库的名称
Trusted_Connection/IntegratedSecurityfalse当为false时,将在连接中指定用户ID和密码。当为true时,将使用当前的Windows账户凭据进行身份验证。可识别的值为true、false、yes、no以及与true等效的sspi(强烈推荐)UserIDSQLServer登录账户。为保持高安全级别,强烈建议用户使用IntegratedSecurity或Trusted_Connection关键字
Connection对象在.NETFramework中表示属性名称默认值说明Password/PwdSQLServer账户登录的密码。建议不要使用。为保持高安全级别,强烈建议使用IntegratedSecurity或Trusted_Connection关键字PersistSecurityInfofalse当该值设置为false或no(强烈推荐)时,如果连接是打开的或者一直处于打开状态,那么安全敏感信息(如密码)将不会作为连接的一部分返回。重置连接字符串将重置包括密码在内的所有连接字符串值。可识别的值为true、false、yes和noConnectTimeout/ConnectionTimeout15在终止尝试并产生错误之前,等待与服务器的连接的时间长度(以秒为单位)PacketSize8192用来与SQLServer的实例进行通信的网络数据包的大小,以字节为单位PoolingFalse/True数据库连接池的数量ConnectionString属性属性名称默认值说明Password/PwdSQL连接本地SQLServer的字符串连接远程SQLServer的连接字符串连接字符串SqlConnectionconn=newSqlConnection("Server=(local);Database=SMDB;IntegratedSecurity=SSPI;");SqlConnectionconn1=newSqlConnection("Server=MyServer;Database=SMDB;Userid=lxhPassword=1234;ConnectionTimeout=60;");连接本地SQLServer的字符串连接字符串SqlConnSqlConnection对象的主要方法方法名称说明Open该方法使用连接字符串中指定的连接详细信息打开连接Close该方法关闭当前处于打开状态的连接ChangeDatabase修改目前用于连接的数据库。只有在连接打开时才能使用该方法Dispose释放连接使用的所有资源SqlConnection对象的主要方法方法名称说Connection对象的操作方法常规操作使用Using简化操作01 stringstr="Server=(local);Database=SMDB;IntegratedSecurity=SSPI;";02 using(SqlConnectionconn=newSqlConnection(str))03 {04 conn.Open();05 //此处使用数据库连接访问SMDB数据库06 }01stringstr="Server=(local);Database=SMDB;IntegratedSecurity=SSPI;";02SqlConnectionconn=newSqlConnection(str);//创建新的连接对象03conn.Open();//打开连接04//此处使用数据库连接访问SMDB数据库05conn.Close();//关闭连接Connection对象的操作方法常规操作01 string使用Web.Config文件定义数据连接字符串为了便于程序移植,通常在web.config文件中定义连接字符串,而不是采用硬编码。设置ConnectionString节读取连接字符串01 <connectionStrings>02 <addname="smdbconn"connectionString="Server=(local);Database=SMDB;03 IntegratedSecurity=SSPI;"providerName="System.Data.SqlClient"/>04 </connectionStrings>stringstr=ConfigurationManager.ConnectionStrings["smdbconn"].ConnectionString;学习提示:使用ConfigurationManager类时,需要导入命名空间System.Configuration使用Web.Config文件定义数据连接字符串为了便于程序移实例讲解连接到SQLServer数据库配置web.config文件设计用户界面添加事件代码实例讲解连接到SQLServer数据库4.3连接式数据访问模式操作数据库连接好数据源后,就可以与数据库进行交互,最简单的方式就是直接操作数据库。Command对象实现对数据库执行T-SQL语句或存储过程Command对象的常用属性属性说明CommandText获取或设置要对数据源执行的Transact-SQL语句、表名或存储过程
CommandTimeout获取或设置在终止执行命令的尝试并生成错误之前的等待时间
CommandType获取或设置一个值,该值指示如何解释CommandText属性Connection获取或设置SqlCommand实例使用的SqlConnectionParameters获取或设置SqlParameterCollection参数集Transaction获取或设置在SqlCommand执行过程中的SqlTransaction4.3连接式数据访问模式操作数据库连接好数据源后,就可以4.3连接式数据访问模式操作数据库Command对象的常用方法方法名称说明Cancel尝试取消SqlCommand的执行CreateParameter创建SqlParameter对象的新实例ExecuteNonQuery执行T-SQL语句并返回受影响的行数ExecuteReader将CommandText发送到Connection并生成一个SqlDataReader,已重载ExecuteScalar执行查询,并返回查询所返回的结果集中第一行的第一列,忽略其他列或行4.3连接式数据访问模式操作数据库Command对象的常基本步骤打开到数据库连接。创建新的Command对象。定义T-SQL命令。执行T-SQL命令。关闭数据库连接。使用Command对象操作数据基本步骤使用Command对象操作数据案例探讨利用Command对象在SMDB数据库创建和删除表Test案例探讨利用Command对象在SMDB数据库创建和删除表T案例探讨如何统计SMDB数据库中注册会员的人数(Users表)?案例探讨如何统计SMDB数据库中注册会员的人数(Users表参数化的好处在实际应用中,常常需要用户在页面上输入信息,并将这些信息插入到数据库中。只要允许用户输入数据,就有可能出现输入错误,并可能对Web应用程序创建和执行SQL代码产生致命的影响。为了解决这个问题,除了对输入控件进行检查之外,还可以在生成T-SQL命令时,不使用窗体变量而使用SQL参数来构造连接字符串。SQL参数不属于SQL查询的可执行脚本部分。由于错误或恶意的用户输入不会处理成可执行脚本,所以不会影响SQL查询的执行结果。参数化Command命令参数化的好处参数化Command命令Parameters属性和SqlParameter对象要在ADO.NET对象模型中使用SQL参数,需要向Command对象的Parameters集合中添加Parameter对象。在使用SQLServer.NET数据提供程序时,要使用的Parameter对象的类名为SqlParameter。SqlParameter对象的属性参数化Command命令属性名称说明ParameterName
获取或设置SqlParameter的名称
DbType
获取或设置参数的SqlDbType
Direction
获取或设置一个值,该值指示参数是输入、输出、双向还是存储过程返回值参数
Value
获取或设置该参数的值
Parameters属性和SqlParameter对象参数化案例探讨实现向SMDB数据库添加管理员(Admins表)的功能案例探讨实现向SMDB数据库添加管理员(Admins表)的功DataReader对象的特点DataReader只能读取数据,不能对记录进行数据的编辑、添加和删除。DataReader只能在记录间“向前”移动,一旦移动到“下一个”记录,就不能再回到前一个记录了,除非再执行一遍所有的SQL查询。DataReader不能在IIS内存中存储数据,数据直接在页面对象上显示。DataReader是工作在连接模式下的,应用程序在读取数据时,数据库的连接必须处于打开状态。4.3.2DataReader数据读取器DataReader对象的特点4.3.2DataRead属性名称说明Connection获取与SqlDataReader关联的SqlConnection数据库连接对象Depth获取一个指示当前行的嵌套深度的值FieldCount获取当前行中的列数HasRows获取一个指示SqlDataReader是否包含一行或多行的值IsClosed检索一个指示是否已关闭指定的SqlDataReader实例的布尔值Item已重载。获取以本机格式表示的列的值RecordsAffected获取执行Transact-SQL语句所更改、插入或删除的行数SqlDataReader对象的属性属性名称说明Connection获取与SqlDSqlDataReader对象的方法方法名称说明Read使SqlDataReader前进到下一条记录
NextResult当读取批处理T-SQL语句的结果时,使数据读取器前进到下一个结果
GetValue根据列的索引值,返回当前行中该列的数据GetValues将当前行的所有数据保存到指定数组中GetName获取指定列的名称
GetSchemaTable返回SqlDataReader的元数据的DataTableIsDBNull根据列的索引值,用来当前行中的该列是否为空
Close关闭SqlDataReader对象SqlDataReader对象的方法方法名称说案例探讨读取SMDB中指定会员(Users)的信息?案例探讨读取SMDB中指定会员(Users)的信息?获取某一表中的字段名获取某一记录的字段值stringSQLStr="select*fromGoods";SqlCommandcmd=newSqlCommand(SQLStr,conn);SqlDataReaderdr=cmd.ExecuteReader();DataTablescm=dr.GetSchemaTable();//检索列架构信息(列的字段属性)foreach(DataRowmyRowinscm.Rows){Message.Text=myRow[0].ToString()+"<br>";}使用SqlDataReader对象stringSQLStr="select*fromUserswhereid=2";SqlCommandcmd=newSqlCommand(SQLStr,conn);SqlDataReaderdr=cmd.ExecuteReader();if(dr.Read()){txtName.Text=dr[“uName"].ToString();txtPassord.Text=dr[“uPwd"].ToString();txtAge.Text=dr[“uAge"].ToString();}获取某一表中的字段名stringSQLStr="sel用户身份验证任务实施用户身份验证任务实施步骤1.还原数据库备份。步骤2.新建一个网站AdminLoginDemo,添加Web窗体AdLoign.aspx。步骤3.为AdLoign.aspx页添加界面元素。任务实施步骤1.还原数据库备份。任务实施步骤4.配置数据库连接字符串。步骤5.构建T-SQL语句。<connectionStrings><addname="SMDBConnStr"connectionString="IntegratedSecurity=SSPI;PersistSecurityInfo=False;InitialCatalog=SuperMarketDB;DataSource=."providerName="System.Data.SqlClient"/></connectionStrings>任务实施selectcount(*)fromadminswhereaName=@nameandaPwd=@pwdandaType=@type步骤4.配置数据库连接字符串。<connectionStri步骤6.为登录按钮添加事件代码任务实施01 //程序名称:AdLogin.aspx.cs02 //程序功能:管理员登录身份验证03 usingSystem.Configuration;04 usingSystem.Data.SqlClient;05 publicpartialclass_Default:System.Web.UI.Page06 {07 protectedvoidbtnConfirm_Click(objectsender,EventArgse)08 {09 //创建连接字符串10 stringstr=ConfigurationManager.ConnectionStrings["smdb"].ConnectionString;11 stringname=txtName.Text;//获取用户输入的用户名12 stringpwd=txtPwd.Text;//获取用户输入的密码13 inttype=int.Parse(ddlType.SelectedValue);步骤6.为登录按钮添加事件代码任务实施01 //程序名称:A任务实施14 using(SqlConnectionconn=newSqlConnection(str))15 {16 try17 { conn.Open();18 stringsqlTxt="selectcount(*)fromadminswhereaName=@name19andaPwd=@pwdandaType=@type";20 SqlCommandcmd=newSqlCommand(sqlTxt,conn);21 SqlParameter[]sps={newSqlParameter("name",name),22 newSqlParameter("pwd",pwd),23 newSqlParameter("type",type)};24 cmd.Parameters.AddRange(sps);25 if(((int)cmd.ExecuteScalar())>0)26 {27 Session["manager"]=name;28 Response.Write("<script>alert('登录成功');29 location.href('AdMain.aspx');</script>");30}else31 Response.Write("<script>alert('用户名或密码错误')</script>");32 }catch(SqlExceptionee)33 {34 Response.Write("<script>alert('系统异常,稍后重试')</script>");35 }}}}任务实施14 using(SqlConne应用程序数据访问任务2商品信息查询应用程序数据访问任务2商品信息查询任务场景基于B2C模式的网上商城,其最普遍的业务就是能够为用户提供商品的查询功能,游客和会员都可以根据自己的喜好浏览商品,查看商品详情,并可以根据商品名、类别、价格等查询商品,还可以对商品按价格、销量等属性进行排序。本任务通过使用数据源控件SqlDataSource、数据绑定控件GridView,结合数据绑定、DataSet对象和DataAdapter对象,实现商品信息查询功能。任务场景基于B2C模式的网上商城,其最普遍的业务就是能够为用知识要点断开式数据访问模式DataSet对象DataAdapter对象数据绑定绑定单值数据绑定集合数据使用数据源控件绑定数据GridView数据控件的使用GridView控件概述分页和排序自定义列知识要点断开式数据访问模式DataSet对象DataSet对象即数据集对象,采用断开连接数据访问模式。DataSet对象是数据的一种内存驻留表示形式,无论包含的数据来自什么数据源,它都会提供一致的关系编程模型。DataSet对象把数据存储在一个或多个DataTable中,每一个DataTable又包含了DataRow和DataColumn。XML文档可以导入DataSet对象,而DataSet对象中的数据也可以导出为XML文档。4.4断开式数据访问模式操作数据库DataSet对象4.4断开式数据访问模式操作数据库DataSet类相关联的主要类//为数据表动态添加列01DataTabledt=newDataTable("Test");02DataColumnmyCol1=newDataColumn("id",typeof(int));03DataColumnmyCol2=newDataColumn("name",typeof(string));04dt.Columns.Add(myCol1);05dt.Columns.Add(myCol2);//在dt表中创建新行01DataRowmyRow=dt.NewRow();//在dt表上创建新行02myRow["id"]=1;03myRow["name"]="ASP.NET";04dt.Rows.Add(myRow);05myRow=dt.NewRow();//在dt表上创建新行06myRow["id"]=2;07myRow["name"]="SQLServer";08dt.Rows.Add(myRow);09foreach(DataRowdrindt.Rows)10Response.Write("No"+dr["id"]+""+dr["name"]+"<br/>");DataSet类相关联的主要类//为数据表动态添加DataAdapter对象是DataSet和ADO.NET对象模型中断开式连接对象之间的桥梁。DataAdapter对象的属性包含SQL语句的SqlCommand或OleDbCommand对象,有4种Command-Type属性SelectCommand:该属性发布一个SQLSelect语句。UpdateCommand:该属性发布一个SQLUpdate语句。InsertCommand:该属性发布一个SQLInsert语句。DeleteCommand:该属性发布一个SQLDelete语句。DataAdapter对象的主要方法DataAdapter对象方法名称说明Fill将SelectCommand查询执行结果集向DataSet对象添加表。FillSchema将SelectCommand查询执行结果集向DataSet对象添加表结构。Update检查DataTable中发生的变化,并更新到数据库中。DataAdapter对象是DataSet和ADO.NET对案例探讨查看商品信息表中前5条记录信息?案例探讨查看商品信息表中前5条记录信息?断开式数据访问的一般步骤使用连接对象连接并打开数据库;创建数据适配器DataAdapter对象,并设置其SelectCommand属性;调用适配器DataAdapter对象的Fill方法将查询的结果集填充到DataSet的表中关闭连接,操作DataSet对象;若DataSet中的数据发生变化,则调用DataAdapter的Update()方法更新数据库。断开式数据访问的一般步骤使用连接对象连接并打开数据库;添加记录更新记录删除记录DataTabledt=ds.Tables[“users"];DataRowrow=dt.NewRow();row[“uName"]=TextBox1.Text;dt.Rows.Add(row);da.Update(ds,“users");stringstr="SELECT*FROMUserswhereuID="+uID;DataTabledt=ds.Tables[“users"];DataRowrow=dt.Rows[0];row[“uName"]=TextBox1.Text;da.Update(ds,“users");使用DataSet对数据源记录的编辑方法stringstr=“SELECT*FROMUserswhereuID="+uID;DataTabledt=ds.Tables[“users"];DataRowrow=dt.Rows[0];row.Delete();da.Update(ds,“users");添加记录DataTabledt=ds.Tables[“数据绑定数据绑定是指在程序运行过程中,将数据值动态地赋值给控件属性的过程。数据绑定是声明式的,而非编程式。绑定单值数据<%#%>Eval()Bind()绑定集合数据对象的DataSource属性和DataBind()方法使用数据源控件绑定数据SqlDataSource对象数据绑定数据绑定是指在程序运行过程中,将数据值动态地赋值给控绑定单值数据案例解析01<!--程序名称:4_7.aspx-->02成员变量值:<%#uName%><br/>03成员方法返回值:<%#returnInt()%><br/>04计算表达式:<%#"ASP"+".NET"%><br/>05控件属性:<%#Label1.Text%><br/>06虚拟应用程序根路径:<%#Request.ApplicationPath%><br/>07配置文件数据:<asp:LabelID="Label1"runat="server"Text="<%$AppSettings:test%>"/>08//程序名称:4_7.aspx.cs09protectedstringuName="张三";10protectedvoidPage_Load(objectsender,EventArgse)11{this.DataBind();}//执行绑定12protectedintreturnInt()13{return1000;}绑定单值数据案例解析01<!--程序名称:4_7.as绑定单值数据单值数据绑定主要应用在数据绑定控件上。ASP.NET对具有
DataBinding事件的对象(如GridView、DataList、Reapter控件)提供数据绑定表达式支持Eval()方法用于单向绑定,一般用于显示数据,被绑定的数据不能被更新;Bind()方法用于双向绑定,支持数据的读和写。01 <asp:TemplateField>02 <EditItemTemplate>03 <asp:LabelID="商品ID"runat="server"Text='<%#Eval("gdID")%>'/>04 <asp:TextBoxID="商品名称"runat="server"Text='<%#Bind("gdName")%>'/>05 <asp:ButtonID="UpdateButton"runat="server"Text="更新"/>06 </EditItemTemplate>07 </asp:TemplateField>绑定单值数据单值数据绑定主要应用在数据绑定控件上。ASP绑定集合数据当待绑定数据源是集合时(如数组、哈希表、数据库查询结果集),最常用的数据显示方式就是将集合绑定到集合类型的控件。如DropDownList、ListBox、CheckBoxList、RadioButtonList等列表类控件。实现过程设置DataSource属性
ddlGoodType.DataSource=ds.Tables["gtype"]; ddlGoodType.DataTextField="tName"; ddlGoodType.DataValueField=“tID”;调用DataBind方法
dlGoodType.DataBind();绑定集合数据当待绑定数据源是集合时(如数组、哈希表、数据库查案例探讨显示商品类别?案例探讨显示商品类别?SqlDataSource控件一个数据源控件代表数据在系统内存中的映像,并能够在Web页面上通过数据绑定控件展示出来。SqlDataSource可用于任何具有关联ADO.NET提供程序的数据库,包括MicrosoftSQLServer、OLEDB、ODBC或Oracle数据库。案例实现使用SqlDataSource实现商品信息展示(配置向导)使用数据源控件绑定数据SqlDataSource控件使用数据源控件绑定数据参数化查询01SelectCommand="SELECT[gdID],[gdCode],[gdName],[gdPrice]FROM[Goods]"02DeleteCommand="DELETEFROM[Goods]WHERE[gdID]=@gdID"03InsertCommand="INSERTINTO[Goods]([gdCode],[gdName],[gdPrice])04VALUES(@gdCode,@gdName,@gdPrice)"05UpdateCommand="UPDATE[Goods]SET[gdCode]=@gdCode,[gdName]=@gdName,06[gdPrice]=@gdPriceWHERE[gdID]=@gdID"07<UpdateParameters>08<asp:ParameterName="gdCode"Type="String"/>09<asp:ParameterName="gdName"Type="String"/>10<asp:ParameterName="gdPrice"Type="Double"/>11<asp:ParameterName="gdID"Type="Int32"/>12</UpdateParameters>参数化查询定义参数参数化查询01SelectCommand="SEL案例演示使用SqlDataSource实现商品信息的模糊查询案例演示使用SqlDataSource实现商品信息的模糊查询GridView控件概述GridView控件以表格的形式显示数据源的值,每列表示一个字段,每行表示一条记录。该控件提供了内置排序功能、内置更新和删除功能、内置分页功能、内置行选择功能、以编程方式访问GridView对象模型以动态设置属性以及处理事件等功能。可以通过主题和样式进行自定义外观,实现多种样式的数据展示。4.6GridView控件GridView控件概述4.6GridView控件GridView控件常用属性属性名称功能说明AutoGenerateColumns设置是否为数据源中的每个字段自动创建绑定字段。这个属性默认为true,但在实际开发中很少使用自动创建绑定列Columns获取GridView控件中列字段的集合AllowPaging设置是否启用分页功能PageCount获取在GridView控件中显示数据源记录所需的页数PageIndex获取或设置当前显示页的索引PagerSetting设置GridView的分页样式PageSize设置GridView控件每次显示的最大记录条数AllowSorting设置是否启用排序功能GridView控件常用属性属性名称功能说明AuGridView控件常用方法方法名称功能说明RowCommand单击GridView控件内列中的某个按钮时触发RowDataBound当GridView控件绑定数据到某行时触发SelectedIndexChanging单击GridView控件内某一行中CommandName属性值为“Select”的按钮时触发RowEditing单击GridView控件内某一行中CommandName属性值为“Edit”的按钮时触发RowUpdating单击GridView控件内某一行中CommandName属性值为“Update”的按钮时触发RowDeleting单击GridView控件内某一行中CommandName属性值为“Delete”的按钮时触发GridView控件常用方法方法名称功能说明Ro启用分页和排序通过编程方式实现分页AllowPaging属性设置为TruePageSize属性设置页的大小PageIndex属性设置GridView控件的当前页PagerSettings属性进行分页的UI设计分页和排序启用分页和排序分页和排序PageSettings属性分页模式说明NextPrevious由“上一页”和“下一页”按钮组成的分页控件NextPreviousFirstLast由“上一页”、“下一页”、“首页”、“末页”按钮组成的分页控件Numeric由用于直接访问页的带编号的链接按钮组成的分页控件NumericFirstLast由带编号的链接按钮及“首页”和“末页”链接按钮组成的分页控件PageSettings属性分页模式说明Nex案例探讨GridView控件实现商品信息的分页和排序?案例探讨GridView控件实现商品信息的分页和排序?4.6.3自定义列4.6.3自定义列列的类型说明BoundField绑定字段,以文本的方式显示数据CheckBoxField复选框字段,如果数据库是bit字段,则以此方式显示HyperLinkField用超链接的形式显示字段值ImageField用于显示存放Image图像的URL字段数据ButtonField显示按钮列CommandField显示可执行操作的列,可以执行编辑或者删除等操作。可以设置它的ButtonType属性来决定显示成普通按钮、图片按钮或者超链接TemplateField自定义数据的显示方式,可以使用所熟悉的HTML控件或者Web服务器控件GridView中列的类型列的类型说明BoundField绑定字段,以文BoundField绑定列,以文本的方式显示数据。CheckBoxField复选框列,用于显示布尔型数据字段的值HyperLinkField超链接列,用超链接的形式显示列值<asp:BoundFieldDataField="gdName"HeaderText="商品名称"SortExpression="gdName"/>GridView中列的类型<asp:CheckBoxFieldDataField="bnCheck"HeaderText="审核"SortExpression="bnCheck"/><asp:HyperLinkFieldDataNavigateUrlFields="gdID"HeaderText="查看"Text="查看"DataNavigateUrlFormatString="GoodsDetails.aspx?gdid={0}"/>BoundField<asp:BoundFieldDataImageField图像列,以图像方式显示数据。ButtonField和CommanField按钮列和命令列,创建用于“编辑”、“更新”、“取消”和“删除”功能的按钮。<asp:ImageFieldDataImageUrlField="gdImage"HeaderText="商品图片"DataImageUrlFormatString="images/img{0}.jpg"/>GridView中列的类型<asp:ButtonFieldButtonType="Link"CommandName="Update" HeaderText="编辑"ShowHeader="True"Text="更新"/><asp:CommandFieldButtonType="Button"HeaderText="操作"ShowHeader="True"ShowDeleteButton="True"ShowEditButton="True"ShowSelectButton="True"/>ImageField<asp:ImageFieldDataGridView中列的类型TemplateField模板列,提供开发人员自定义数据显示方式。模板类型说明AlternatingItemTemplate交替项模板,定义GridView中的交替行样式EditItemTemplate编辑项模板,定义列的编辑样式FooterTemplate脚模板,即脚注部分要显示的内容,不可以进行数据绑定HeaderTemplate头模板,即表头部分要显示的内容,不可以进行数据绑定ItemTemplate项模板,提供在GridView中显示数据列的样式01 <asp:TemplateFieldHeaderText="商品类别ID">02 <ItemTemplate>03 <asp:LabelID="Label1"runat="server"Text='<%#Eval("tID")>'/>04 </ItemTemplate>05 </asp:TemplateField>GridView中列的类型TemplateField模板任务实施商品信息查询任务实施商品信息查询任务实施步骤1.还原数据库备份步骤2.新建网站FindGoodsDemo,添加Web窗体FindGoods.aspx步骤3.在FindGoods.aspx上添加界面元素任务实施步骤1.还原数据库备份任务实施步骤4.浏览页面效果任务实施步骤4.浏览页面效果任务实施步骤5.为页面中ddGType对象添加DataBound事件。01//程序名称:FindGoods.aspx.cs02//程序功能:实现商品多条件查询03protectedvoidddlGType_DataBound(objectsender,EventArgse)04{05ListItemitem=newListItem("所有类别","0");06ddlGType.Items.Insert(0,item);07}任务实施步骤5.为页面中ddGType对象添加DataBo任务实施步骤6.为页面中“搜索”按钮添加Click事件08protectedvoidbtnFind_Click(objectsender,EventArgse)09{10 sqlGoods.SelectParameters.Clear();//清空数据源控件的参数集11 grdGoods.DataSourceID=null; //清空GridView控件grdGoods的数据源
12 stringsqlstr=sqlGoods.SelectCommand;13 switch(rdltSaleQty.SelectedIndex)14 {15 case0:sqlstr+="wheregdSaleQty>=0";break;16 case1:sqlstr+="wheregdSaleQty<20";break;17 case2:sqlstr+="wheregdSaleQtybetween20and49";break;18 case3:sqlstr+="wheregdSaleQty>50";break;19}20 if(txtGName.Text!="")21 {22 sqlstr+="andgdNamelike'%'+@dgname+'%'";23 Parameterpm=newParameter("dgname",DbType.String,txtGName.Text);24 sqlGoods.SelectParameters.Add(pm);25 }任务实施步骤6.为页面中“搜索”按钮添加Click事件08任务实施步骤6.为页面中“搜索”按钮添加Click事件26if(ddlGType.SelectedValue!="0")27{28 sqlstr+="andGoods.tID=@tID";29 Parameterpm=newParameter("tID",DbType.Int16,ddlGType.SelectedValue);30 sqlGoods.SelectParameters.Add(pm);31}32if(txtPriceLow.Text!=""||txtPriceHigh.Text!="")33{34 sqlstr+="andgdPrice>=@lowandgdPrice<@high";35 Parameterpm=newParameter("low",DbType.Int16,txtPriceLow.Text);36 sqlGoods.SelectParameters.Add(pm);37 pm=newParameter("high",DbType.Int16,txtPriceHigh.Text);38 sqlGoods.SelectParameters.Add(pm);39}40sqlGoods.SelectCommand=sqlstr;41grdGoods.DataSourceID="sqlGoods";42}任务实施步骤6.为页面中“搜索”按钮添加Click事件26任务实施步骤7.浏览页面,验证程序功能任务实施步骤7.浏览页面,验证程序功能应用程序数据访问任务3商品信息管理应用程序数据访问任务3商品信息管理任务场景信息管理是任何一个Web应用程序不可或缺的功能,应用程序管理员通过后台信息的添加、修改和删除来维护数据。本任务通过ADO.NET调用存储过程及事务管理,高效的实现在B2C网上商城中商品信息的添加、删除和修改功能。任务场景信息管理是任何一个Web应用程序不可或缺的功能,应用知识要点ADO.NET调用存储过程存储过程的分类调用存储过程事务知识要点ADO.NET调用存储过程ADO.NET调用存储过程直接使用T-SQL语句操作访问数据是一种低效的资源使用方式,并且有可能产生安全风险。存储过程是数据库开发人员为了使用某一特定的功能而编写的数据库过程,它具有良好的逻辑封装体。使用存储过程的优点易于维护。正确使用存储过程能够将数据库应用与应用程序的业务逻辑分开,当维护数据库相关功能时,只需要修改存储过程即可;提升性能。使用存储过程能有效提高数据访问效率,存储过程会在第一次执行时被编译,应用程序可以直接从编译后的文件中获取相应结果;减少流量和通信。使用存储过程访问数据,可以降低对网络带宽的需求,减少应用程序读取数据库的次数;提高安全性。只允许可信赖的本地存储过程访问数据库,提高数据的安全性。ADO.NET调用存储过程直接使用T-SQL语句操作访问数据返回记录集的存储过程返回记录集的存储过程常用于查找指定记录,然后将查找、排序和过滤后的结果返回到DataSet对象或list-bound控件例:定义了查询所有商品信息的存储过程createproc[dbo].[upGetGoodsInfo]asselect*fromdbo.Goods存储过程分类返回记录集的存储过程createproc[dbo].[返回值的存储过程返回值的存储过程也称为标量存储过程,常用于执行返回单一值的数据库命令或函数。例:定义了判断用户名是否存在的存储过程createproc[dbo].[upExistsUserName]@uNamevarchar(100),@flagintoutputAsbeginifexists(select*fromdbo.UserswhereuName=@uName) return1return0end存储过程分类返回值的存储过程createproc[dbo].[up行为存储过程行为存储过程用于实现数据的更新、编辑和修改的功能,但不返回记录的值。删除指定商品的存储过程。存储过程分类createproc[dbo].[upDelGoodsByID]@gIDintAsbegindeletefromGoodswheregdID=@gIDend行为存储过程存储过程分类createproc[dbo].调用返回记录集的存储过程调用返回记录集的存储过程时,如果把记录保存在DataSet对象中,则需要使用DataAdapter对象和Fill方法。调用返回记录集的存储过程时,如果使用DataReader对象保存在list-bound控件中,需要使用Command对象和ExecuteReader方法,然后将返回记录绑定到list-bound控件。调用存储过程调用返回记录集的存储过程调用存储过程调用返回值的存储过程调用返回值的存储过程时,需使用Command对象的ExecuteScalar方法,并把结果保存在一个相应数据类型的变量中。调用执行功能的存储过程调用执行功能的存储过程用来执行一些数据库操作,而不会返回记录集和值,常使用Command对象的ExecuteNonQuery方法。调用存储过程调用返回值的存储过程调用存储过程参数用法InputWeb应用程序用来向存储过程传递特定的数据值Output存储过程用来向调用它的Web应用程序返回特定的值InputOutput存储过程用来检索Web应用程序发送的信息,并把特定值返回给Web应用程序ReturnValue存储过程用来传递一个返回值给调用它的应用程序。在SQLServer数据库中使用参数时,可向Command对象的Parameters集合中添加参数。存储过程可以使用的参数类型。存储过程的参数类型参数用法InputWeb应用程序用来向存储过调用存储过程01 SqlCommandcmd=newSqlCommand("upGetInfo",conn);//upGetInfo为存储过程名称02 cmd.CommandType=CommandType.StoredProcedure;//设置Command对象的类型01 //定义输入参数02 SqlParameterinpm=newSqlParameter("@uName",SqlDbType.Varchar,50);03 inpm.Direction=ParameterDirection.Input;04 //定义输出参数05 SqlParameteroutpm=newSqlParameter("@uId",SqlDbT);06 outpm.Direction=ParameterDirection.Output;07
//定义返回值参数08 SqlParameterreturnpm=newSqlParameter("@uReturn",SqlDbT);09 returnpm.Direction=ParameterDirection.ReturnValue;01 intoutvalue=(int)cmd.Parameters["@uId"].Value;//获取输出参数02 intrevalue=(int)cmd.Parameters["@uReturn"].Value;//获取返回值定义Command设定参数获取返回结果调用存储过程01 SqlCommandcmd=newS案例探讨使用存储过程添加新的商品类别,并返回该类别的ID值案例探讨使用存储过程添加新的商品类别,并返回该类别的ID值事务
事务是作为单个逻辑工作单元执行的一系列操作,该逻辑单元中的任务要么全部执行成功要么全部执行失败。通过事务来控制和维护数据的一致性和完整性。它具有四个特性。原子性,事务中所有的操作要么都执行,要么都不执行。一致性,事务使数据在稳定的状态间转换。事务结束时,所有的数据都保持一致。隔离性,为防止多个并发的数据更新彼此干扰,事务在操作数据时与其他事务操作隔离。持久性,事务结束后,它对数据产生的变化是永久的。SqlTransactionBeginTransaction()方法Commit()方法RollBack()方法事务事务是作为单个逻辑工作单元执行的一系列操作,该逻辑商品信息管理的实现任务实施商品信息管理的实现任务实施任务实施步骤1.还原数据库备份步骤2.新建网站GoodsManagerDemo,添加Web窗体GoodsManager.aspx商品管理页AddGoods.aspx添加商品页EditGoods.aspx修改商品页步骤3.设计网站主题风格01 /*程序名称:css.css*/02 body{margin:0auto;font-size:0.8em;}03a{text-decoration:none;}04.noborder{border:0;}05 .content{width:700px;margin-left:50px;margin-top:20px;}06 .center{text-align:center;line-height:20px;padding:8px;}07 .name{width:200px;line-height:20px;padding:8px;}08 .hstyle{line-height:30px;}09 .txtwidth{width:300px;}任务实施步骤1.还原数据库备份01 /*程序名称:css.任务实施步骤4.在GoodsManager.aspx页上添加界面元素步骤5.浏览页面效果任务实施步骤4.在GoodsManager.aspx页上添任务实施步骤6.编写“添加商品”按钮的单击事件步骤7.定义添加商品的存储过程步骤8.在AddGoods.aspx页中添加页面元素01 --程序名称:GoodsManager.aspx.cs02 --程序功能:单击“添加商品”,页面跳转至“AddGoods.aspx”页03 protectedvoidbtnAdd_Click(objectsender,EventArgse)04 {Response.Redirect("AddGoods.aspx");}任务实施步骤6.编写“添加商品”按钮的单击事件01 --程任务实施步骤9.为“添加”按钮编写单击事件,定义上传图片方法09publicstringimgUpLoad(FileUploadfUpload)10{11stringfileName="";12if(fUpload.HasFile)13{14stringfileExt=Path.GetExtension(fUpload.FileName).ToLower();15stringuploadFileExt=".gif|.jpg|.png|.bmp";//设置过滤的图片文件类型16if(("|"+uploadFileExt+"|").IndexOf(("|"+fileExt+"|"))>=0)17 {18 try{19fileName=DateTime.Now.ToString("yyyymmddhhmmss").ToString()+fileExt;20 fUpload.SaveAs(Server.MapPath("Images/Goods/")+fileName);21 }catch(Exceptionee){22 ClientScript.RegisterStartupScript(GetType(),"","<script>alert('"+ee.Message+"')</script>");24}}25else{26ClientScript.RegisterStartupScript(GetType(),"","<script>alert('请上传gif|jpg|png|bmp的文件')</script>");28 }}returnfileName;29}任务实施步骤9.为“添加”按钮编写单击事件,定义上传图片方任务实施步骤9.为“添加”按钮编写单击事件31protectedvoidbtnAdd_Click(objectsender,EventArgse)32{33 stringstr=ConfigurationManager.ConnectionStrings["smdb"].ConnectionString;34 stringfilename=imgUpLoad(fldImg);35 using(SqlConnectionconn=newSqlConnection(str))36 {37 conn.Open();38 SqlCommandcmd=newSqlCommand("upAddGoods",conn);39 cmd.CommandType=CommandType.StoredProcedure;40 SqlParameter[]ps={newSqlParameter("@tID",ddlType.SelectedValue),41newSqlParameter("@gdCode",txtCode.Text),42newSqlParameter("@gdName",txtName.Text),49……};50 cmd.Parameters.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 石料购销合同协议
- 企业内部管理流程标准化实践案例分享
- 智能新闻平台开发合同
- 快消品行业线上线下融合营销策略实施方案
- VRAR技术在旅游、教育等行业的融合应用
- 城市环卫考核制度优化方案
- 宠物行业智能喂养与健康管理系统开发方案
- 电子信息工程承包合同
- 农业智能种植基地建设与运营方案
- 金融科技行业区块链技术与金融服务方案
- 《东南亚经济与贸易》习题集、案例、答案、参考书目
- 烧烤店装修合同范文模板
- 2024年中国樱桃番茄种市场调查研究报告
- 数据分析基础与应用指南
- 人教版(PEP)小学六年级英语上册全册教案
- 广东省广州市海珠区2023-2024学年六年级上学期月考英语试卷
- 消防水域救援个人防护装备试验 大纲
- 机电样板施工主要技术方案
- 涉税风险管理方案
- 青岛市2022-2023学年七年级上学期期末道德与法治试题
- 高空作业安全免责协议书范本
评论
0/150
提交评论