项目四Web应用开发中的数据访问课件

上传人:沈*** 文档编号:242015258 上传时间:2024-08-10 格式:PPT 页数:190 大小:3.02MB
返回 下载 相关 举报
项目四Web应用开发中的数据访问课件_第1页
第1页 / 共190页
项目四Web应用开发中的数据访问课件_第2页
第2页 / 共190页
项目四Web应用开发中的数据访问课件_第3页
第3页 / 共190页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,项目四,Web,应用开发中的数据访问,任务,1,用户注册功能的实现,任务,2,在线购物时商品管理功能的实现,任务,3,购物车的实现,任务,4,留言板的功能实现,任务,1,用户注册功能的实现,任务场景,:,几乎所有的,Web,系统中,都需要实现用户注册功能,即有一个注册页面。项目,2,的任务,1,完成了用户注册的页面设计和数据验证。,本任务使用,ASP.NET 3.5,提供了,ADO.NET,数据访问技术,轻松地实现应用程序连接数据库,并将用户注册的信息保存到数据库中。,知识要点,数据访问模型,数据访问原理,ADO.NET,访问技术,使用,Connection,对象连接数据库,编写代码创建数据库连接,使用,Web.Config,文件定义数据连接字符串,使用,Command,对象操作数据库,Command,对象,使用,Command,对象操作数据,使用,DataReader,对象读取数据,SqlDataReader,对象的属性和方法,使用,SqlDataReader,对象,4.1,数据访问模型,数据访问原理,ADO.NET,访问技术,数据访问原理,ASP.NET3.5,通过对,ADO.NET,的引用,达到了获取数据和操作数据的目的。,数据访问涉及四个主要的组件:,Web,应用程序(,ASP.NET,)、数据层(,ADO.NET,)、数据提供程序以及数据源。,数据访问原理,数据存储(,Data Store,),数据存放的源头,包括关系数据库、,XML,文件、,Web,服务、平面文件或诸如,Microsoft Excel,电子数据表程序中的数据。,数据提供程序(,Provider,),ASP.NET,提供不同数据源的提供程序,开发人员只需编写一组数据访问代码就能访问各种类型的数据。,数据操作层(,DataLayer,),通过,ADO.NET API,定义的抽象层,不论何种数据源,提取信息的过程都具有相同的关键类和步骤。,Web,应用程序层,一系列数据控件,ADO.NET,访问技术,一种将,Microsoft.NET,的,Web,应用程序以及,Microsoft Windows,应用程序连接到诸如,SQL Server,数据库或,XML,文件等数据源的技术。,专门为,Internet,无连接的工作环境而设计,它提供了一种简单而灵活的方法,便于开发人员把数据访问和数据处理集成到,Web,应用程序中。,ADO.NET,访问技术,ADO.NET,组成,ADO.NET,包括两个核心组件:,.NET Framework,数据提供程序和,DataSet,数据集。,数据提供程序,数据提供程序用于连接到数据库、执行命令和检索结果。,数据提供程序中包含的核心对象,对,象,说,明,Connection,建立与数据源的连接,Command,对数据源执行操作命令,DataReader,从数据源中读取只进且只读的数据流,DataAdapter,使用,Connection,对象建立,DataSet,与数据提供程序之间的链接;并协调对,DataSet,中数据的更新,ADO.NET,访问技术,ADO.NET,组成,.NET Framework,提供了,4,个数据提供程序:,SQL Server.NET Framework,数据提供程序,OLE DB.NET Framework,数据提供程序,ODBC.NET Framework,数据提供程序,Oracle.NET Framework,数据提供程序,ADO.NET,访问技术,ADO.NET,组成,DataSet,对象,用于存储从数据源中收集的数据。,处理存储在,DataSet,中的数据并不需要,ASP.NETWeb,窗体与数据源保持连接,仅当数据源中的数据随着改变而被更新的时候,才会重新建立连接。,与,DataSet,相关的对象,对,象,说,明,DataSet,数据在内存中的缓存,DataTable,内存中存放数据的表,DataRow,DataTable,中的行,DataColumn,DataTable,中的列,ADO.NET,访问技术,使用,ADO.NET,访问数据,ADO.NET,提供了一组丰富的对象,用于对任何种类的数据存储的连接式或断开式访问。,在连接式访问模式下,连接会在程序的整个生存周期中保持打开,而不需要对状态进行特殊处理。,断开方式的处理模式可以为应用程序提供良好的性能和伸缩性。,使用,ADO.NET,访问数据,断开式数据访问模式,断开式数据访问模式指的是客户端不直接对数据库进行操作。,使用断开式数据访问模式的基本过程,使用连接对象,Connection,连接并打开数据库。,使用数据适配器,DataAdapter,对象填充数据集,DataSet,。,关闭连接。,对,DataSet,进行更新操作,操作完成后打开连接。,使用数据适配器,DataAdapter,更新数据库,关闭连接。,断开式数据访问模式适用于远程数据处理、本地缓存数据及执行大量数据的处理,而不需要与数据源保持连接的情况。,连接式数据访问模式,指用户在操作过程中,一直与数据库保持连接。,一般使用命令对象,Command,进行数据库相关操作,并使用,DataReader,对象以只读方式返回数据并显示,从而提高应用程序的性能。,在实际应用中,选择数据访问模式的基本原则是首先满足需求,然后考虑性能优化。,4.2,使用,Connection,对象连接数据库,访问数据库的第一项工作就是和数据库建立连接,然后通过该连接向数据库发送命令并读取返回的数据,这些在,ADO.NET,中由,Connection,对象来实现。,编写代码创建数据库连接,使用,Web.Config,文件定义数据连接字符串,编写代码创建数据库连接,使用,SQL,Server.NET,数据提供程序连接,SQL Server 2005,数据库,SQL,Server.NET,数据提供程序提供的相关类在,System.Data.SqlClient,命名空间下,需要使用,SqlConnection,对象来连接数据库,通过设置,SqlConnection,对象的,ConnectionString,属性将建立连接的详细信息传递给,SqlConnection,对象,ConnectionString,中常见的属性,属性名称,默认值,说,明,Server/,Data Source,本地机器,要连接的,SQL Server,实例的名称或网络地址。指定本地实例时,使用(,local,),Initial Catalog/,Database,默认,数据库,数据库的名称,Trusted_Connection,/,Integrated Security,false,当为,false,时,将在连接中指定用户,ID,和密码。当为,true,时,将使用当前的,Windows,账户凭据进行身份验证。可识别的值为,true,、,false,、,yes,、,no,以及与,true,等效的,sspi,(强烈推荐),Password/,Pwd,SQL Server,账户登录的密码。建议不要使用。为保持高安全级别,强烈建议使用,Integrated Security,或,Trusted_Connection,关键字,Persist Security Info,false,当该值设置为,false,或,no,(强烈推荐)时,如果连接是打开的或者一直处于打开状态,那么安全敏感信息(如密码)将不会作为连接的一部分返回。重置连接字符串将重置包括密码在内的所有连接字符串值。可识别的值为,true,、,false,、,yes,和,no,ConnectionString,中常见的属性,属 性 名 称,默认值,说,明,User ID,SQL Server,登录账户(建议不要使用)。为保持高安全级别,强烈建议用户使用,Integrated Security,或,Trusted_Connection,关键字,Connect Timeout/,Connection Timeout,15,在终止尝试并产生错误之前,等待与服务器的连接的时间长度(以秒为单位),Packet Size,8192,用来与,SQL Server,的实例进行通信的网络数据包的大小,以字节为单位,Pooling,False/True,数据库连接池的数量,连接字符串,连接字符串可以在创建,SqlConnection,对象时作为参数传递,也可以通过,ConnectionString,属性来设置。,创建网站到本机上的,SQLServer,连接,SqlConnection,sqlconn,=new,SqlConnection(Server,=(local);,Database=,SuperMarketDB;Integrated,Security=SSPI;“);,创建网站到远程服务器,MyServer,的连接并设置连接超时时间为,60,秒。,SqlConnection,sqlconn2=new,SqlConnection(Userid,=,aa,;,Passord,=,abcd,;Server=,MyServer,;Database=,SuperMarketDB,;Connection Timeout=60;);,SqlConnection,对象的主要方法,方法名称,说,明,Open,该方法使用连接字符串中指定的连接详细信息打开连接,Close,该方法关闭当前处于打开状态的连接,ChangeDatabase,修改目前用于连接的数据库。只有在连接打开时才能使用该方法,编写代码创建数据库连接,使用,OLEDB.NET,数据提供程序连接,Access,数据库,访问,Access,数据库,需要,SQL OLEDB.NET,数据提供程序。,SQL OLEDB.NET,数据提供程序,提供相关类在,System.Data.OleDB,命名空间下,需要,OleDBConnection,对象来连接数据库。,OleDBConnection,和,SqlConnection,的使用基本是一样的,唯一的区别就是,ConnectionString,的取值有所不同,编写代码创建数据库连接,使用,OLEDB.NET,数据提供程序连接,Access,数据库,访问,Access,数据库,StudentMS.mdb,的示例,OleDbConnection,oledbconn,;,oledbconn.ConnectionString,=Provider=Microsoft.Jet.OLEDB.4.0;,DataSource,=,f:SuperMarketDB.mdb,;,oledbconn.Open,();,oledbconn.Close,();,使用,Web.Config,文件定义数据连接字符串,将连接字符串保存在,Web.config,文件中,OleDbConnection,oledbconn,;,oledbconn.ConnectionString,=Provider=Microsoft.Jet.OLEDB.4.0;,DataSource,=,f:SuperMarketDB.mdb,;,oledbconn.Open,();,oledbconn.Close,();,在窗体中创建连接对象读取连接字符串,string,myconnstr,=,ConfigurationManager.ConnectionStringsDBConnStr,.,ConnectionString,;,SqlConnection,sqlconn,=new,SqlConnection(myconnstr,);,sqlconn.Open,();,4.3,使用,Command,对象操作数据库,Command,对象,SqlCommand,对象的属性,SqlCommand,对象的方法,使用,Command,对象操作数据,使用,Command,对象操作数据,在操作数据时使用,SQL,参数,SqlCommand,对象的属性,属,性,说,明,CommandText,获取或设置要对数据源执行的,Transact-SQL,语句、表名或存储过程,CommandTimeout,获取或设置在终止执行命令的尝试并生成错误之前的等待时间,CommandType,获取或设置一个值,该值指示如何解释,CommandText,属性,Connection,获取或设置,SqlCommand,实例使用的,SqlConnection,Parameters,获取,SqlParameterCollection,参数集,Transaction,获取或设置在,SqlCommand,执行过程中的,SqlTransaction,UpdatedRowSource,获取或设置命令结果在由,DbDataAdapter,的“,Update,”,方法使用时,如何应用于,DataRow,。当取值为,None,时,忽略任何返回的参数或行;当取值为,Both,时,将输出参数和第一个返回行映射到,DataSet,中已更改的行,SqlCommand,对象的属性,指定,T-SQL,命令作为,SqlCommand,对象的文本,SqlCommand,cmd,;,cmd.Connection,=,sqlconn,;,cmd.CommandType,=,CommandType.Text,;,cmd.CommandText,=Select*from,T_Ware,;,使用,StordProcedure,命令类型调用存储过程。,SqlCommand,cmd,;,cmd.Connection,=,sqlconn,;,cmd.CommandType,=,CommandType.StoredProcedure,;,cmd.CommandText,=,GetAllWares,;,SqlCommand,对象的方法,方 法 名 称,说,明,Cancel,尝试取消,SqlCommand,的执行,CreateParameter,创建,SqlParameter,对象的新实例,ExecuteNonQuery,连接执行,Transact-SQL,语句并返回受影响的行数,ExecuteReader,将,CommandText,发送到,Connection,并生成一个,SqlDataReader,,已重载,ExecuteScalar,执行查询,并返回查询所返回的结果集中第一行的第一列,忽略其他列或行,ExecuteXmlReader,将,CommandText,发送到,Connection,并生成一个,XmlReader,对象,ResetCommandTimeout,将,CommandTimeout,属性重置为其默认值,SqlCommand,对象的方法,SqlCommand,提供了,3,种不同的方法在,SQL Server,上执行,T-SQL,语句,这,3,种方法的工作方式非常相似。,每种方法都会将在,SqlCommand,对象中形成的命令详细信息,传递给指定的连接对象,再通过,SqlConnection,对象在,SQL Server,上执行,T-SQL,语句,最后根据语句执行结果生成一组数据,SqlCommand,对象的方法,ExecuteNonQuery,返回受,T-SQL,语句影响的行数,适合执行不返回结果集的,T-SQL,命令。,数据定义语句(,DDL,)命令,如,Create Table,、,Create View,、,Drop Table,;,数据操作语言(,DML,)命令,如,Insert,、,Update,和,Delete,;,不返回结果集的存储过程。,SqlCommand,对象的方法,ExecuteNonQuery,string,myconnstr,=,ConfigurationManager.ConnectionStringsDBConnStr.ConnectionString,;,SqlConnection,sqlconn,=new,SqlConnection(myconnstr,);,SqlCommand,cmd,;,cmd.Connection,=,sqlconn,;,cmd.CommandType,=,CommandType.Text,;,sqlconn.Open,();,SqlCommand,对象的方法,ExecuteNonQuery,cmd.CommandText,=Create Table,TempTable(IDCol,Int,);,cmd.ExecuteNonQuery,();,cmd.CommandText,=Insert,TempTable(IDCol,)Values(1);,cmd.ExecuteNonQuery,();,cmd.CommandText,=Drop Table,TempTable,;,cmd.ExecuteNonQuery,();,sqlconn.Close,();,SqlCommand,对象的方法,ExecuteReader,返回,DataReader,对象,String,str,=“select SPMC from T_SPXX”;,SqlCommand,scmd,=new,SqlCommand,(,str,sqlconn,);,SqlDataReader,sdr,=,scmd.ExecuterReader,();,while(sdr.Read,(),Label1.Text=,sdr“SPMC”.ToString,()+”;,SqlCommand,对象的方法,ExecuteScalar,返回一个单值,.,多用于使用聚合函数的情况,例如,COUNT(*),之类的聚合函数。,String,str,=select count(*)from T_SPXX;,SqlCommand,scmd,=new,SqlCommand,(,str,conn,);,int,count=Convert.toInt32(scmd.ExecuteScalar();,使用,Command,对象操作数据,使用,Command,对象实现数据库的操作是典型的,ADO.NET,连接式操作模式。其基本步骤包括:,打开到数据库连接。,创建新的,Command,对象。,定义,T-SQL,命令。,执行,T-SQL,命令。,关闭数据库连接。,使用,Command,对象操作数据,获取用户在文本框中输入的姓名、性别、职务、公司和联系方式等信息,并将获取的信息插入到数据库中。,string,strName,=TextBox1.Text;,string,strSex,=TextBox2.Text;,string,strPost,=TextBox3.Text;,string,strCompany,=TextBox4.Text;,string,strContact,=TextBox5.Text;,string,connstr,=,ConfigurationManager.ConnectionStringsConnStr.ConnectionString,;,使用,Command,对象操作数据,SqlConnection,conn,=new,SqlConnection(connstr,);,conn.Open,();,string,SQLStr,=insert into,T_Ware,values(+,strName,+,+,strSex,+,+,strPost,+,+,strCompany,+,+,strContact,+);,SqlCommand,cmd,=new,SqlCommand(SQLStr,conn,);,cmd.ExecuteNonQuery,();,conn.Close,();,在操作数据时使用,SQL,参数,在实际应用中,常常需要用户在页面上输入信息,并将这些信息插入到数据库中。只要允许用户输入数据,就有可能出现输入错误,并可能对,Web,应用程序创建和执行,SQL,代码产生致命的影响。,为了解决这个问题,除了对输入控件进行检查之外,还可以在生成,T-SQL,命令时,不使用窗体变量而使用,SQL,参数来构造连接字符串。,SQL,参数不属于,SQL,查询的可执行脚本部分。由于错误或恶意的用户输入不会处理成可执行脚本,所以不会影响,SQL,查询的执行结果。,在操作数据时使用,SQL,参数,Parameters,属性和,SqlParameter,对象,要在,ADO.NET,对象模型中使用,SQL,参数,需要向,Command,对象的,Parameters,集合中添加,Parameter,对象。在使用,SQL,Server.NET,数据提供程序时,要使用的,Parameter,对象的类名为,SqlParameter,。,SqlParameter,对象的属性,属性名称,说,明,DbType,获取或设置参数的,SqlDbType,Direction,获取或设置一个值,该值指示参数是输入、输出、双向还是存储过程返回值参数,ParameterName,获取或设置,SqlParameter,的名称,Size,获取或设置列中数据的最大大小(以字节为单位),SqlDbType,获取或设置参数的,SqlDbType,的数据类型,SqlValue,获取作为,SQL,类型的参数的值,或设置该值,Value,获取或设置该参数的值,在操作数据时使用,SQL,参数,Parameters,属性和,SqlParameter,对象,使用,SQL,参数的基本步骤,使用,Parameters,构建,SqlCommand,命令字符串。,声明,SqlParameter,对象,并赋值。,将,SqlParameter,对象赋值给,SqlCommand,对象的,Parameters,属性。,string,strName,=TextBox1.Text;,string,strSex,=TextBox2.Text;,string,strPost,=TextBox3.Text;,string,strCompany,=TextBox4.Text;,string,strContact,=TextBox5.Text;,string,connstr,=,ConfigurationManager.ConnectionStrings“ConnStr”.ConnectionString,;,在操作数据时使用,SQL,参数,SqlConnection,conn,=new,SqlConnection(connstr,);,conn.Open,();,string,SQLStr,=insert into,T_Ware,values(strName,strSex,strPost,strCompany,strContact,);,SqlParameter,paraName1=new,SqlParameter(strName,strName,);,SqlParameter,paraName2=new,SqlParameter(strSex,strSex,);,SqlParameter,paraName3=new,SqlParameter(strPost,strPost,);,SqlParameter,paraName4=new,SqlParameter(strCompany,strCompany,);,SqlParameter,paraName5=new,SqlParameter(strContact,strContact,);,SqlCommand,cmd,=new,SqlCommand(SQLStr,conn,);,在操作数据时使用,SQL,参数,cmd.Parameters.Add(paraName1);,cmd.Parameters.Add(paraName2);,cmd.Parameters.Add(paraName3);,cmd.Parameters.Add(paraName4);,cmd.Parameters.Add(paraName5);,cmd,.,ExecuteNonQuery,();,conn.Close,();,4.4,使用,DataReader,对象读取数据,DataReader,对象定义如何根据连接读取数据。,DataReader,对象的特点主要有:,DataReader,只能读取数据,不能对记录进行数据的编辑、添加和删除。,DataReader,只能在记录间“向前”移动,一旦移动到“下一个”记录,就不能再回到前一个记录了,除非再执行一遍所有的,SQL,查询。,DataReader,不能在,IIS,内存中存储数据,数据直接在页面对象上显示。,DataReader,是工作在连接模式下的,应用程序在读取数据时,数据库的连接必须处于打开状态。,SqlDataReader,对象的属性,属 性 名 称,说,明,Connection,获取与,SqlDataReader,关联的,SqlConnection,数据库连接对象,Depth,获取一个指示当前行的嵌套深度的值,FieldCount,获取当前行中的列数,HasRows,获取一个指示,SqlDataReader,是否包含一行或多行的值,IsClosed,检索一个指示是否已关闭指定的,SqlDataReader,实例的布尔值,Item,已重载。获取以本机格式表示的列的值,RecordsAffected,获取执行,Transact-SQL,语句所更改、插入或删除的行数,SqlDataReader,对象的方法,方 法 名 称,说,明,Close,关闭,SqlDataReader,对象,GetBoolean,、,GetByte,、,GetChar,、,GetDateTime,、,GetDecimal,、,GetDouble,、,GetFloat,、,GetGuid,、,GetInt16,、,GetInt32,、,GetInt64,按指定的,System,数据类型返回列值。不转换列值,因此必须保持数据类型一致,GetBytes,、,GetChars,从列中指定的偏移量的位置获取字节流或字符流,GetName,获取指定列的名称,GetSchemaTable,返回一个描述,SqlDataReader,的元数据的,DataTable,GetSqlBinary,、,GetSqlBoolean,、,GetSqlByte,、,GetSqlDateTime,、,GetSqlDecimal,、,GetSqlDouble,、,GetSqlGuid,、,GetSqlInt16,、,GetSqlInt32,、,GetSqlInt64,、,GetSqlMoney,、,GetSqlSingle,、,GetSqlString,、,按指定的,SQL,数据类型返回列值。它不转换列值,因此必须是所要求的数据类型,或者是可以兼容的基类型,SqlDataReader,对象的方法,方 法 名 称,说,明,GetSqlValue,、,GetValue,分别以其本地的,SQLServer,或,.NET,数据类型返回列值,GetSqlValues,、,GetValues,分别以其本地的,SQLServer,或,.NET,数据类型返回列值填充数组,IsDBNull,获取一个值,用于指示列中是否包含不存在的或缺少的值,Read,使,SqlDataReader,前进到下一条记录,NextResult,当读取批处理,Transact-SQL,语句的结果时,使数据读取器前进到下一个结果,使用,SqlDataReader,对象,获取某一表中的字段名,string,SQLStr,=select*from,T_Ware,;,SqlCommand,cmd,=new,SqlCommand(SQLStr,conn,);,SqlDataReader,dr,=,cmd.ExecuteReader,();,/,检索列架构信息(列的字段属性),DataTable,scm,=,dr.GetSchemaTable,();,foreach,(,DataRow,myRow,in,scm.Rows,),Message.Text,=myRow0.ToString()+;,使用,SqlDataReader,对象,获取某一记录的字段值,string,SQLStr,=select*from student where id=2;,SqlCommand,cmd,=new,SqlCommand(SQLStr,conn,);,SqlDataReader,dr,=,cmd.ExecuteReader,();,if(,dr.Read,(),txtName.Text,=,drName.ToString,();,txtPassord1.Text=,drPassword.ToString,();,txtAge.Text,=,drAge.ToString,();,任务实施,在线购物时商品管理功能的实现,任务实施,步骤,1,还原数据库备份。,步骤,2,新建一个网站,添加,Web,窗体。,步骤,3,添加用户输入的控件。,步骤,4,为输入控件添加验证。,任务实施,步骤,5,配置数据库连接字符串。,任务实施,步骤,6,实现将用户注册信息保存到数据库,并提示注册成功的功能。,protected void,btnOK_Click(object,sender,EventArgs,e),if(,Page.IsValid,),string username=,txtUsername.Text,;,string password=,txtPwd.Text,;,string,truename,=,txtName.Text,;,string sex=,radioSex.SelectedValue,;,int,age=Convert.ToInt16(txtAge.Text);,string email=,txtEmail.Text,;,string,qq,=,txtQQ.Text,;,string,connstr,=,ConfigurationManager.ConnectionStringsSMDBConnStr,.,ConnectionString,;,SqlConnection,conn,=new,SqlConnection(connstr,);,conn.Open,();,任务实施,string,sqlstr,=insert into,t_Vip(hy_Username,hy_passwod,hy_name,hy_sex,hy_age,hy_email,hy_qq,),values(hy_Username,hy_passwod,hy_name,hy_sex,hy_age,hy_email,hy_qq,);,SqlParameter,prams=new,SqlParameter(hy_Username,username),,,new,SqlParameter(hy_passwod,password),,,new,SqlParameter(hy_name,truename,),,,new,SqlParameter(hy_sex,sex),,,new,SqlParameter(hy_age,DbType.Int16),,,new,SqlParameter(hy_email,email),,,new,SqlParameter(hy_qq,qq,),;,SqlCommand,cmd,=new,SqlCommand(sqlstr,conn,);,if(prams!=null),foreach(SqlParameter para in prams),cmd.Parameters.Add(para);,cmd.ExecuteNonQuery();,Response.Write(alert(,注册成功,);,任务实施,步骤,7,浏览“,Register.aspx,”页面,查看效果。,任务,2,在线购物时商品管理功能的实现,任务场景,:,对于像“淘宝”、“阿里巴巴”之类的购物网站,不仅买家能方便地查找自己喜欢的商品,而且卖家还能管理自己的商品,如对商品进行添加、删除和修改等操作。,本任务通过使用数据源控件,SqlDataSource,、数据绑定控件,GridView,和,FormView,控件,结合,DataSet,对象和,DataAdapter,对象,来实现商品管理的各项功能。,知识要点,SqlDataSource,控件,GridView,控件,DataSet,对象和,DataAdapter,对象,FormView,控件,数据绑定,4.5,SqlDataSource,控件,SqlDataSource,控件概述,在,SqlDataSource,中使用参数化查询,数据绑定控件,4.5.1,SqlDataSource,控件概述,一个数据源控件代表数据在系统内存中的映像,并能够在,Web,页面上通过数据绑定控件展示出来。,ASP.NET 3.5,提供了,SqlDataSource,、,AccessDataSource,、,ObjectDataSource,、,XmlDataSource,和,SiteMapDataSource,5,个内置数据源控件。,SqlDataSource,可用于任何具有关联,ADO.NET,提供程序的数据库,包括,Microsoft SQL Server,、,OLE DB,、,ODBC,或,Oracle,数据库。,SqlDataSource,控件实现数据访问,例,4-1,:查询商品类型表,T_WareType,中商品类别的名称,并将查询结果置于下拉列表控件,DropDownList1,中,新建,Web,窗体,添加,SqlDataSource,控件。,SqlDataSource,控件实现数据访问,配置数据源,SqlDataSource,控件实现数据访问,配置数据源,SqlDataSource,控件实现数据访问,将连接字符串保存到配置文件,Web.Config,中,SqlDataSource,控件实现数据访问,配置,SqlDataSource1,数据源控件关联的,SQL,语句,SqlDataSource,控件实现数据访问,在页面中,添加一个,DropDownList,控件,单击该控件右边的“智能标记”按钮,选择“选择数据源”命令。,SqlDataSource,控件的属性,ConnectionString,设置特定数据库的连接字符串。,为使,Web,应用程序更易于维护并且安全性更高,通常将连接字符串存储在应用程序配置文件的,connectionStrings,元素中。,SelectCommand,指定该控件要执行的,SQL,查询。,4.5.2,在,SqlDataSource,中使用参数化查询,用户在文本框中输入要查询的商品名称的部分文字,单击“查询”按钮,在商品表(,T_Ware,)中查找符合条件的商品信息,并将查询结果呈现在,GridView,控件中。,新建,Web,窗体,添加一个,TestBox,控件;添加一个查询按钮。,4.5.2,在,SqlDataSource,中使用参数化查询,添加,SqlDataSource,控件,配置数据源。,4.5.2,在,SqlDataSource,中使用参数化查询,单击“,WHERE,”按钮,弹出“添加,WHETE,子句”对话框。,4.5.2,在,SqlDataSource,中使用参数化查询,添加了参数之后,单击“确定”按钮以返回“配置数据源”向导。,SELECT,sp_WareID,sp_WareName,FROM,T_Ware,WHERE,sp_WareName,like%+,sp_WareName,+%,4.5.2,在,SqlDataSource,中使用参数化查询,完成,SqlDataSource,的配置,查看其声明标记代码。,asp:SqlDataSource,ID=SqlDataSource1,runat,=server,ConnectionString,=,SelectCommand,=SELECT,sp_WareID,sp_WareName,FROM,T_Ware,WHERE,(,sp_WareName,LIKE%+,sp_WareName,+%),4.5.3,数据绑定控件,常用的数据绑定控件,DropDownList,ListBox,GridView,DataList,FormView,Repeater,常用属性和方法,DataSource,属性,DataSourceID,属性,DataBind,方法,4.6,GridView,控件,GridView,控件概述,自定义列,分页,4.6.1,GridView,控件概述,GridView,控件以表格的形式显示数据源的值,每列表示一个字段,每行表示一条记录。,该控件提供了内置排序功能、内置更新和删除功能、内置分页功能、内置行选择功能、以编程方式访问,GridView,对象模型以动态设置属性以及处理事件等功能。,可以通过主题和样式进行自定义外观,实现多种样式的数据展示。,GridView,控件常见属性,属 性 名 称,功 能 说 明,AllowPaging,设置是否启用分页功能,AllowSorting,设置是否启用排序功能,AutoGenerateColumns,设置是否为数据源中的每个字段自动创建绑定字段。这个属性默认为,true,,但在实际开发中很少使用自动创建绑定列,Columns,获取,GridView,控件中列字段的集合,PageCount,获取在,GridView,控件中显示数据源记录所需的页数,PageIndex,获取或设置当前显示页的索引,PagerSetting,设置,GridView,的分页样式,PageSize,设置,GridView,控件每次显示的最大记录条数,4.6.2,自定义列,GridView,中列的类型,列 的 类 型,说,明,BoundField,绑定字段,以文本的方式显示数据,CheckBoxField,复选框字段,如果数据库是,bit,字段,则以此方式显示,HyperLinkField,用超链接的形式显示字段值,ImageField,用于显示存放,Image,图像的,URL,字段数据,ButtonField,显示按钮列,CommandField,显示可执行操作的列,可以执行编辑或者删除等操作。可以设置它的,ButtonType,属性来决定显示成普通按钮、图片按钮或者超链接,TemplateField,自定义数据的显示方式,可以使用所熟悉的,HTML,控件或者,Web,服务器控件,GridView,中列的类型,绑定列,用于显示数据源中一列的信息。,GridView,中列的类型,复选框列,用于显示布尔型数据字段的值。,超链接列,用于显示各行中的链接。,GridView,中列的类型,图像列,可以为所显示的每行记录显示图像。,按钮列,可以创建“编辑”、“更新”、“取消”和“删除”功能的按钮。,GridView,中列的类型,模板列,新增模板列,对模板列进行编辑和设计,GridView,控件中的模板类型,模 板 类 型,说,明,AlternatingItemTemplate,交替项模板,定义,GridView,中的交替行样式,EditItemTemplate,编辑项模板,定义列的编辑样式,FooterTemplate,脚模板,即脚注部分要显示的内容,不可以进行数据绑定,HeaderTemplate,头模板,即表头部分要显示的内容,不可以进行数据绑定,ItemTemplate,项模板,提供在,GridView,中显示数据列的样式,模板列举例,例,4-3,:使用,GridView,控件显示商品记录列表,在,GridView,中添加一个模板列,用来显示商品类别的名称,模板列举例,界面文件中绑定列和模板列的代码,模板列举例,asp:SqlDataSource,ID=SqlDataSource1,runat,=server,ConnectionString,=,SelectCommand,=SELECT,sp_WareID,sp_WareName,sp_Price,splb_TypeID,sp_Checked,FROM,T_Ware,模板列举例,对,GridView,控件的,RowDataBound,事件编写代码,在模板列上显示商品类别。,protected void GridView1_RowDataBound(object sender,GridViewRowEventArgs,e),if(,e.Row.RowType,=,DataControlRowType.DataRow,),/,获取每一行的商品类别的,ID,int,typeID,;,typeID,=Convert.ToInt32(DataBinder.Eval(e.Row.DataItem,splb_TypeID,);,/,获取某商品类别,ID,的名称,string,str,=,TypeName(typeID,);,/,在,GridView,的行中查找名为“,Label1”,的控件,Label,lbl,=(Label)e.Row.FindControl(Label1);,lbl.Text,=,str,;,模板列举例,使用,TypeName,方法读出指定商品类别编号所对应的商品名称。,protected string,TypeName(int,typeID,),string s=;,string,str,=select,splb_TypeName,from,T_WareType,where,splb_typeid,=+,typeID,;,SqlConnection,string,strconn,=,ConfigurationManager.ConnectionStringsSMDBConnStr.ConnectionString,;,conn,=new,SqlConnection(strconn,);,conn.Open,();,SqlCommand,cmd,=new,SqlCommand(str,conn,);,SqlDataReader,sdr,=,cmd.ExecuteReader,();,if(,sdr.Read,(),s=,sdrsplb_TypeName.ToString,();,conn.Close,();,return s;,4.6.3,分页,界面方式实现分页,通过编程方式实现分页,AllowPaging,属性设置为,True,PageSize,属性设置页的大小,PageIndex,属性设置,GridView,控件的当前页,PagerSettings,属性进行分页的,UI,设计,,4.7,DataSet,对象和,DataAdapter,对象,DataSet,对象,DataAdapter,对象,填充数据集,使用,DataSet,对数据源中的记录进行编辑,4.7.1,DataSet,对象,DataSet,对象即数据集对象,采用断开连接数据访问模式。,DataSet,对象是数据的一种内存驻留表示形式,无论包含的数据来自什么数据源,它都会提供一致的关系编程模型。,DataSet,对象把数据存储在一个或多个,DataTable,中,每一个,DataTable,又包含了,DataRow,和,DataColumn,。,XML,文档可以导入,DataSet,对象,而,DataSet,对象中的数据也可以导出为,XML,文档。,DataSet,类相关联的主要类,4.7.2,DataAdapter,对象,DataAdapter,对象是,DataSet,和,ADO.NET,对象模型中断开式连接对象之间的桥梁。,该对象使用,Connection,对象与数据库连接,然后使用,Command,和,DataReader,对象来获取数据和处理数据库的变化。,DataAdapter,对象的属性包含,SQL,语句的,SqlCommand,或,OleDbCommand,对象,有,4,种,Command-Type,属性,SelectCommand,:该属性发布一个,SQL Select,语句。,UpdateCommand,:该属性发布一个,SQL Update,语句。,InsertCommand,:该属性发布一个,SQL Insert,语句。,DeleteCommand,:该属性发布一个,SQL Delete,语句。,4.7.3,填充数据集,DataAdapter,填充,DataSet,的过程主要分为两个步骤:,通过,DataAdapter,的,SelectCommand,属性从数据库中检索出所需数据。,调用,DataAdapter,的,Fill,方法把检索出的数据填充到,DataSet,。,填充数据集的代码,string,connstr,=,ConfigurationManager.ConnectionStringsSMDBConnStr.ConnectionString,;,SqlConnection,sqlConn,=new,SqlConnection(connstr,);,sqlConn.Open,();,string,str,=SELECT*FROM,T_WareType,SqlDataAdapter,da,=new,SqlDataAdapter(str,sqlConn,);,DataSet,ds,=new,DataSet,();,da.Fill(ds,splb,);,4.7.4,使用,DataSet,对数据源中的记录进行编辑,添加记录,更新记录,DataTable,dt,=,ds.Tablessplb,;,DataRow,row=,dt.NewRow,();,rowsplb_TypeName,=TextBox1.Text;,dt.Rows.Add(row,);,da.Update(ds,splb,);,string,str,=SELECT*FROM,T_WareType,where,splb_TypeID,=+,spID,;,DataTable,dt,=,ds.Tablessplb,;,DataRow,row=dt.Rows0;,rowsplb_TypeName,=TextBox1.Text;,da.Update(ds,splb,);,4.7.4,使用,DataSet,对数据源中的记录进行编辑,删除记录,string,str,=SELECT*FROM,T_WareType,where,splb_TypeID,=+,spID,;,DataTable,dt,=,ds.Tablessplb,;,DataRow,row=dt.Rows0;,row.Delete,();,da.Update(ds,splb,);,4.8,FormView,控件,FormView,控件的功能,可以绑定到数据源控件,如,SqlDataSource,和,ObjectDataSource,。,内置插入、更新和删除功能。,内置分页功能。,可以动态设置属性和处理事件。,可通过用户定义的模板、主题和样式自定义外观。,更新记录,FormView,控件举例,sp_WareID,:,asp:Label,ID=sp_WareIDLabel1,runat,=server,Text=/,sp_Information,:,asp:TextBox,ID=,sp_InformationTextBox,runat,=server,Text=/,sp_Time,:,asp:TextBox,ID=,sp_TimeTextBox,runat,=server,Text=/,sp_Price,:,asp:TextBox,ID=,sp_PriceTextBox,runat,=server,Text=/,sp_WareName,:,asp:TextBox,ID=,sp_WareNameTextBox,runat,=server,Text=/,FormView,控件举例,sp_Information,:,asp:TextBox,ID=,sp_Inform
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!