书签 分享 收藏 举报 版权申诉 / 112
上传文档赚钱

类型第7章数据访问课件.ppt

  • 上传人(卖家):晟晟文业
  • 文档编号:3861395
  • 上传时间:2022-10-19
  • 格式:PPT
  • 页数:112
  • 大小:336.51KB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《第7章数据访问课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    数据 访问 课件
    资源描述:

    1、掌握掌握Visual Studio 2008中管理数据库的方法中管理数据库的方法熟练使用数据源控件熟练使用数据源控件掌握掌握LINQ查询表达式查询表达式熟练使用熟练使用LINQ to SQL和和LINQ to XML进行数进行数据访问管理据访问管理7.1 数据访问概述数据访问概述7.2 建立建立SQL Server Express数据库数据库7.3 数据源控件数据源控件7.3.1 SqlDataSource控件控件7.3.2 XmlDataSource控件控件7.3.3 SiteMapDataSource控件控件7.3.4 LinqDataSource控件控件7.4 使用使用LINQ实现数据访

    2、问实现数据访问7.4.1 LINQ查询表达式查询表达式7.4.2 LINQ to SQL概述概述7.4.3 LINQ to SQL查询数据查询数据7.4.4 使用使用LINQ to SQL管理数据管理数据7.4.5 LINQ to XML概述概述7.4.6 使用使用LINQ to XML管理管理XML文档文档7.5 小结小结ASP.NET 1.X主要使用主要使用ADO.NET访问数据。访问数据。ADO.NET提供了用于完成如数据库连接、查询提供了用于完成如数据库连接、查询数据、插入数据、更新数据和删除数据等操作数据、插入数据、更新数据和删除数据等操作的对象。的对象。Connection对象对象

    3、Command对象对象DataReader对象对象DataAdapter对象对象DataSet对象对象 Connection、Command和和DataReader对象:只能读对象:只能读取数据库。如果只是想查取数据库。如果只是想查询记录的话,这种方式的询记录的话,这种方式的效率更高些。效率更高些。Connection、Command、DataAdapter和和DataSet对对象:可以对数据库进行各象:可以对数据库进行各种操作。种操作。数据源控件数据源控件封装所有获取和处理数据的功能,封装所有获取和处理数据的功能,主要包括连接数据源、使用主要包括连接数据源、使用Select、Update、D

    4、elete和和Insert等等SQL语句获取和管理数据等。语句获取和管理数据等。数据绑定控件数据绑定控件主要用于以多种方式显示数据。主要用于以多种方式显示数据。结合使用数据源控件和数据绑定控件,只需要结合使用数据源控件和数据绑定控件,只需要设置相关属性,几乎不用编写任何代码即能存设置相关属性,几乎不用编写任何代码即能存取数据库。取数据库。填补了传统填补了传统.NET语言和查询语句之间的空白,语言和查询语句之间的空白,使得查询等数据访问操作完全与使得查询等数据访问操作完全与.NET语言整语言整合,实现了合,实现了通过通过.NET语言访问数据库语言访问数据库的功能。的功能。未来数据访问的趋势。未来

    5、数据访问的趋势。SQL Server Express 2005是是SQL Server 2005系系列中的列中的精简版精简版,允许无偿获取并免费再分发,允许无偿获取并免费再分发,同时对系统配置的要求相对比较低,同时对系统配置的要求相对比较低,非常适合非常适合于中小型企业的开发应用于中小型企业的开发应用。SQL Server Express 2005与与ASP.NET 3.5紧密紧密集成。在安装集成。在安装Visual Studio 2008时,与时,与ASP.NET 3.5一同安装。一同安装。允许建立网站时直接在允许建立网站时直接在Visual Studio 2008的开的开发环境中创建并管理

    6、数据库。发环境中创建并管理数据库。在在ASP.NET 3.5的用户认证和个性化的服务中,的用户认证和个性化的服务中,会自动创建会自动创建SQL Server Express 2005的数据库的数据库ASPNETDB.MDF,并能与网站配合,自动保,并能与网站配合,自动保存相关数据,从而简化了设计过程。存相关数据,从而简化了设计过程。利用图形管理工具利用图形管理工具SSMSE管理管理SQL Server Express数据库。数据库。利用利用Visual Studio 2008 中中“服务器资源管理器服务器资源管理器”管理管理 SQL Server Express数据库。数据库。用于实现从不同数

    7、据源获取数据的功能。用于实现从不同数据源获取数据的功能。提供了统一的基本编程模型提供了统一的基本编程模型。通过数据源控件中定义的各种事件,可以实现通过数据源控件中定义的各种事件,可以实现Select、Update、Delete和和Insert等数据操作。等数据操作。提供了数据操作前后的事件。如:提供了数据操作前后的事件。如:实现数据插入操作的实现数据插入操作的Insert()方法。方法。发生在数据插入之前的发生在数据插入之前的Inserting事件。事件。发生在数据插入之后的发生在数据插入之后的Inserted事件。事件。用来访问用来访问Access、SQL Server、SQL Server

    8、 Express、Oracle、ODBC数据源和数据源和OLEDB数数据源。据源。要访问带密码的要访问带密码的Access数据库,就不能使用数据库,就不能使用AccessDataSource,只能使用,只能使用SqlDataSource控控件。件。ConnectionString获取或设置连接到数据库的字符串。DataSourceMode获取或设置获取数据时所使用的数据返回模式。值DataReader表示获取只读数据;值为DataSet表示获取数据可更改。默认值为DataSet。DeleteCommand获取或设置用于删除数据的SQL语句或存储过程名。DeleteCommandType获取或设

    9、置属性DeleteCommand值的类型。Text表示SQL语句;StoreProcedure表示存储过程。默认值为Text。DeleteParameters获取DeleteCommand值中出现的参数集合。DeleteQuery设置Delete命令使用的参数。EnableCaching逻辑值,true表示启用数据缓存功能,false表示不启用。默认值为false。InsertCommand获取或设置用于插入数据的SQL语句或存储过程名。InsertCommandType获取或设置属性InsertCommand值的类型。InsertParameters获取属性InsertCommand值中出现

    10、的参数集合。InsertQuery设置Insert语句使用的参数。ProviderName获取或设置连接数据源的提供程序名称。SelectCommand获取或设置用于查询数据的SQL语句或存储过程名。SelectCommandType获取或设置属性SelectCommand值的类型。SelectParameters获取SelectCommand值中出现的参数集合。SelectQuery设置Select语句使用的参数。UpdateCommand获取或设置用于更新数据的SQL语句或存储过程。UpdateCommandType获取或设置UpdateCommand值的类型。UpdateParamete

    11、rs获取属性UpdateCommand值中出现的参数集合。UpdateQuery设置Update命令使用的参数。使用使用SqlDataSource连接数据源不需要编写代连接数据源不需要编写代码,只需按码,只需按“配置数据源配置数据源”向导逐步设置就可以向导逐步设置就可以了。了。下拉列表框会列出存储在下拉列表框会列出存储在App_Data文件文件夹中的数据库名和存储在夹中的数据库名和存储在web.config文件文件的的配置节配置节中的数据中的数据连接名。连接名。连接字符串包括数据库信息和身份验证连接字符串包括数据库信息和身份验证信息。信息。Data Source=.SQLEXPRESS;Att

    12、achDbFilename=|DataDirectory|MyPetShop.mdf;Integrated Security=True;User Instance=True SQL Server数据库的身份验证数据库的身份验证:Windows验证、验证、SQL Server验证和混合验证。验证和混合验证。Windows验证验证使用使用Windows用户帐号连接用户帐号连接SQL Server,常用于局域网络常用于局域网络。SQL Server验证验证使用使用SQL Server的注册帐号连的注册帐号连接接SQL Server,常用于常用于Internet环境环境。Data Source=.SQ

    13、LEXPRESS;AttachDbFilename=E:BookMyPetShop.mdf;Persist Security Info=True;User ID=saa;Password=sdf1;Connect Timeout=30;User Instance=False混合验证的连接字符串可选择混合验证的连接字符串可选择Windows验证格验证格式或式或SQL Server验证格式。验证格式。在在SqlDataSource控件的定义中控件的定义中 在在web.config的的配置节中配置节中 SqlDataSource控件的定义控件的定义asp:SqlDataSource ID=SqlDa

    14、taSource1 runat=server ConnectionString=SelectCommand=SELECT DISTINCT CategoryId FROM Product 利用命令行工具利用命令行工具aspnet_regiis.exe为连接字符串为连接字符串加密。加密。aspnet_regiis pef connectionStrings E:website 利用命令行工具利用命令行工具aspnet_regiis.exe为连接字符串为连接字符串解密。解密。aspnet_regiis pdf connectionStrings E:website 连接数据库失败是程序开发中常有的

    15、情形。造连接数据库失败是程序开发中常有的情形。造成成失败的原因失败的原因有连接字符串设置错误、数据库有连接字符串设置错误、数据库服务未启动、网络问题等。此时,需要给用户服务未启动、网络问题等。此时,需要给用户适当的出错提示信息。适当的出错提示信息。当数据库连接正常时在下拉列表中填充当数据库连接正常时在下拉列表中填充“Category”表的表的“Name”字段信息。当数据库字段信息。当数据库连接失败时返回出错信息。连接失败时返回出错信息。源程序:源程序:FailtureConn.aspx程序说明:当程序说明:当SqlDataSource控件执行控件执行Select命命令之后,将触发令之后,将触发

    16、Selected事件,并且抛出任何事件,并且抛出任何异常信息。因此,数据库连接失败的处理可在异常信息。因此,数据库连接失败的处理可在Selected事件中捕获异常,再显示出错信息并事件中捕获异常,再显示出错信息并通知通知SqlDataSource控件已处理异常。控件已处理异常。在在Select、Insert、Delete、Update等数据操作等数据操作时允许使用参数。时允许使用参数。ControlParameter:实现控件属性值与参数的绑定。:实现控件属性值与参数的绑定。FormParameter:实现表单域的值与参数的绑定。:实现表单域的值与参数的绑定。CookieParameter:实

    17、现:实现Cookie对象值与参数的绑定。对象值与参数的绑定。ProfileParameter:实现用户配置属性值与参数的绑定。:实现用户配置属性值与参数的绑定。QueryStringParameter:实现:实现QueryString对象值与参数对象值与参数的绑定。的绑定。SessionParameter:实现:实现Session对象与参数的绑定。对象与参数的绑定。当选择宠物类别后,列表框中将显示该类别的当选择宠物类别后,列表框中将显示该类别的所有产品。所有产品。源程序:源程序:SqlDSParameters.aspx 程序说明:本示例不用编写任何代码,所有操程序说明:本示例不用编写任何代码,

    18、所有操作都通过属性设置实现。作都通过属性设置实现。在数据源配置时除可设定在数据源配置时除可设定Select语句外,还可语句外,还可组合组合Insert、Update和和Delete语句。语句。设定的设定的Select语句在网页有数据显示时即被执语句在网页有数据显示时即被执行,不需要调用相应的方法执行,而设定的行,不需要调用相应的方法执行,而设定的Insert、Update和和Delete语句必须调用相应的语句必须调用相应的方法才能被执行。方法才能被执行。例如,例如,Insert语句的执行应语句的执行应调用调用SqlDataSource控件的控件的Insert()方法。方法。当输入当输入“分类名

    19、分类名”、“描述描述”等信息,单击等信息,单击“插入插入并显示并显示”后,将把数据信息插入到后,将把数据信息插入到Category表,表,然后在然后在GridView中显示表中所有数据。中显示表中所有数据。源程序:源程序:SqlDSInsert.aspx 程序说明:单击按钮时将调用程序说明:单击按钮时将调用Insert()方法,从方法,从而执行而执行SqlDataSource中设置的中设置的Insert语句,实语句,实现数据插入功能。然后再执行现数据插入功能。然后再执行SqlDataSource中设置的中设置的Select语句,返回语句,返回 Category表中所有表中所有数据并在数据并在G

    20、ridView中显示出来。中显示出来。使用存储过程,可以将数据库操作的各种使用存储过程,可以将数据库操作的各种SQL命令经过编译后直接存放到数据库端。命令经过编译后直接存放到数据库端。各个应各个应用程序只需利用简单的调用语句即可调用存储用程序只需利用简单的调用语句即可调用存储过程完成对数据库的各种操作。这样就大大提过程完成对数据库的各种操作。这样就大大提高了代码的重用度。高了代码的重用度。存储过程要求实现的功能是向存储过程要求实现的功能是向Category表中插表中插入记录和查询所有记录。入记录和查询所有记录。操作流程:在操作流程:在“服务器资源管理器服务器资源管理器”窗口中展开窗口中展开相应

    21、的数据库,右击相应的数据库,右击“存储过程存储过程”“添加新存添加新存储过程储过程”。源程序:源程序:CategoryInsert存储过程存储过程 本实例实现的功能与实例本实例实现的功能与实例7-3相同,区别是单相同,区别是单击击“插入并显示插入并显示”按钮后将调用存储过程按钮后将调用存储过程CategoryInsert向向Category表插入记录,再将表插入记录,再将Category表中所有记录信息通过表中所有记录信息通过GridView呈现呈现出来。出来。源程序:源程序:SqlDSProcedure.aspx 访问的是访问的是“层次化数据层次化数据”,常用于连接和访问,常用于连接和访问

    22、XML数据源中的数据。数据源中的数据。属性属性DataFile:用于设置要绑定的:用于设置要绑定的XML文件名。文件名。对于能显示层次化数据的控件有对于能显示层次化数据的控件有TreeView、Menu等,只需设置这些控件的属性等,只需设置这些控件的属性DataSourceID值,即能显示值,即能显示XMLDataSource中的中的XML数据。数据。对对GridView控件,需要利用控件,需要利用.xsl文件将文件将XML文文件转化为件转化为“表格化数据表格化数据”后才能正常显示。后才能正常显示。源程序:源程序:books.xml源程序:源程序:books.xsl源程序:源程序:XmlDSG

    23、ridView.aspx 用于访问用于访问 XML格式的网站地图文件格式的网站地图文件Web.sitemap,再将数据源绑定到,再将数据源绑定到TreeView、SiteMapPath或或Menu等控件即能显示网站地图等控件即能显示网站地图文件内容。文件内容。当与当与SiteMapPath控件绑定时,不需要声明控件绑定时,不需要声明SiteMapDataSource,系统会自动实现绑定。,系统会自动实现绑定。不需要设置连接数据源的属性。不需要设置连接数据源的属性。利用利用LINQ访问数据库。访问数据库。在使用时,首先要建在使用时,首先要建立数据源的上下文对象,立数据源的上下文对象,该对象包含要

    24、查询的该对象包含要查询的数据的基对象,实质是一个数据的基对象,实质是一个LINQ to SQL类文类文件。件。表表Category的数据显示利用了的数据显示利用了LinqDataSource和和GridView。源程序:源程序:LinqDSGridView.aspx LINQ集成于集成于.NET Framework 3.5中,提供了中,提供了统一的语法实现多种数据源的查询和管理。它统一的语法实现多种数据源的查询和管理。它与与.NET支持的编程语言整合为一体,使得数支持的编程语言整合为一体,使得数据的查询和管理直接被嵌入在编程语言的代码据的查询和管理直接被嵌入在编程语言的代码中中,这样,就能充分

    25、利用,这样,就能充分利用Visual Studio 2008的的智能提示功能,并且编译器也能检查查询表达智能提示功能,并且编译器也能检查查询表达式中的语法错误。式中的语法错误。LINQ to Object:用于处理:用于处理Array和和List等集合等集合类型数据;类型数据;LINQ to SQL:用于处理:用于处理SQL Server等关系数等关系数据库类型数据;据库类型数据;LINQ to XML:用于处理:用于处理XML类型数据;类型数据;LINQ to DataSet:用于处理:用于处理DataSet类型数据。类型数据。实现了如何访问操作数据,常使用关键字为实现了如何访问操作数据,常

    26、使用关键字为var的隐形变量的隐形变量存放返回数据存放返回数据。这种。这种var变量可变量可以不明确地指定数据类型,但编译器能根据变以不明确地指定数据类型,但编译器能根据变量的表达式推断出该变量的类型。量的表达式推断出该变量的类型。from子句:指定查询操作的数据源和范围变量。子句:指定查询操作的数据源和范围变量。select子句:指定查询结果的类型和表现形式。子句:指定查询结果的类型和表现形式。where子句:指定筛选元素的逻辑条件。子句:指定筛选元素的逻辑条件。group子句:对查询结果进行分组。子句:对查询结果进行分组。orderby子句:对查询结果进行排序。子句:对查询结果进行排序。j

    27、oin子句:连接多个查询操作的数据源。子句:连接多个查询操作的数据源。let子句:引入用于存储查询表达式中的子表达式子句:引入用于存储查询表达式中的子表达式结果的范围变量。结果的范围变量。into子句:提供一个临时标识符,该标识符可以子句:提供一个临时标识符,该标识符可以在在join、group或或select子句中被引用。子句中被引用。查询表达式查询表达式必须以必须以from子句子句开始,开始,以以select或或group子句结束子句结束,中间可以包含一个或多个,中间可以包含一个或多个from、where、orderby、group、join、let等等子句。子句。为关系数据库提供了一个对

    28、象模型,即为关系数据库提供了一个对象模型,即将关系数将关系数据库映射为类对象据库映射为类对象。开发人员将以操作对象的方。开发人员将以操作对象的方式实现对数据的查询、修改、插入和删除等操作。式实现对数据的查询、修改、插入和删除等操作。作用作用DataContext类型(数据上下文)是类型(数据上下文)是System.Data.Linq命名空间下的重要类型,用于把查询句法翻译成命名空间下的重要类型,用于把查询句法翻译成SQL语句,以及把数据从数据库返回给调用方和把实体的语句,以及把数据从数据库返回给调用方和把实体的修改写入数据库。修改写入数据库。功能功能以日志形式记录以日志形式记录DataCont

    29、ext生成的生成的SQL执行执行SQL(包括查询和更新语句)(包括查询和更新语句)创建和删除数据库创建和删除数据库DataContext是实体和数据库之间的桥梁。是实体和数据库之间的桥梁。SQL Server对象LINQ to SQL对象SQL Server数据库DataContext类表实体类属性属性外键关系关联存储过程方法要建立要建立SQL Server数据库数据库与与LINQ to SQL对象间的对象间的映射关系,在映射关系,在Visual Studio 2008环境可自环境可自动完成,当然动完成,当然也可自行建立。也可自行建立。MyPetShop.dbml定义了定义了MyPetShop

    30、数据库的数据库的架构。架构。MyPetShop.dbml.layout定义了每个表在设计定义了每个表在设计视图中的布局。视图中的布局。MyPetShop.designer.cs定义了自动生成的类,定义了自动生成的类,包括:派生自包括:派生自DataContext类以类以MyPetShopDataContext为类名,与为类名,与MyPetShop数据库对应的类;以数据库对应的类;以MyPetShop数数据库中各表的表名作为类名的各实体类。据库中各表的表名作为类名的各实体类。实体类通过实体类通过TableAttribute类的属性类的属性Name描述描述与数据表的映射关系。与数据表的映射关系。T

    31、able(Name=dbo.Category)实体类的属性通过实体类的属性通过ColumnAttribute类映射到类映射到数据库表的属性。数据库表的属性。Column(Storage=_CategoryId,AutoSync=AutoSync.OnInsert,DbType=Int NOT NULL IDENTITY,IsPrimaryKey=true,IsDbGenerated=true)通过通过AssociationAttribute类映射数据库表间的类映射数据库表间的外键关系。外键关系。/实体类实体类Category中的定义中的定义Association(Name=Category_P

    32、roduct,Storage=_Product,OtherKey=CategoryId)/实体类实体类Product中定义中定义Association(Name=Category_Product,Storage=_Category,ThisKey=CategoryId,IsForeignKey=true)存储过程通过存储过程通过FunctionAttribute类实现映射并类实现映射并使用使用ParameterAttribute类描述存储过程的参类描述存储过程的参数和方法的参数。数和方法的参数。Function(Name=dbo.CategoryInsert)public int Catego

    33、ryInsert(Parameter(Name=Name,DbType=VarChar(80)string name,Parameter(Name=Descn,DbType=VarChar(255)string descn)投影投影可采用可采用select子句通过投影操作实现。投影子句通过投影操作实现。投影后的结果将新生成一个对象,该对象通常是后的结果将新生成一个对象,该对象通常是匿名匿名的。的。本实例将创建包含本实例将创建包含ProductID、CategoryID、Name属性的匿名对象。属性的匿名对象。源程序:源程序:LinqSqlQuery.aspx.cs中中btnProject_Cl

    34、ick()部分部分 1./建立建立MyPetShopDataContext对象实例对象实例db2.MyPetShopDataContext db=new MyPetShopDataContext();3.protected void btnProject_Click(object sender,EventArgs e)4.5.var results=from r in db.Product6.select new7.8.r.ProductId,9.r.CategoryId,10.r.Name11.;12.GridView1.DataSource=results;13.GridView1.Dat

    35、aBind();14.实现了记录的过滤,由实现了记录的过滤,由where子句完成。子句完成。实例实例7-9 利用利用LINQ to SQL实现选择实现选择源程序:源程序:LinqSqlQuery.aspx.cs中中btnSelect_Click()部分部分 1.protected void btnSelect_Click(object sender,EventArgs e)2.3.var results=from r in db.Product4.where r.UnitCost 205.select r;6.GridView1.DataSource=results;7.GridView1.D

    36、ataBind();8.实例实例7-10 利用利用LINQ to SQL实现排序实现排序本实例将使用本实例将使用orderby子句根据价格降序排列。子句根据价格降序排列。源程序:源程序:LinqSqlQuery.aspx.cs中中btnOrder_Click()部分部分 1.protected void btnOrder_Click(object sender,EventArgs e)2.3.var results=from r in db.Product4.orderby r.UnitCost descending5.select r;6.GridView1.DataSource=resul

    37、ts;7.GridView1.DataBind();8.使用使用groupby子句。子句。与原始集合不同,分组后的结果集合将与原始集合不同,分组后的结果集合将采用列采用列表的列表形式表的列表形式。列表中的每个元素包括键值及。列表中的每个元素包括键值及根据该键值分组的元素列表。因此,根据该键值分组的元素列表。因此,要访问分要访问分组后的结果集合,必须使用嵌套的循环语句。组后的结果集合,必须使用嵌套的循环语句。外循环用于循环访问每个组,内循环用于循环外循环用于循环访问每个组,内循环用于循环访问每个组的元素列表。访问每个组的元素列表。若要引用组操作的结果,可以使用若要引用组操作的结果,可以使用int

    38、o子句创子句创建用于进一步查询的标识符。建用于进一步查询的标识符。实例实例7-11 利用利用LINQ to SQL实现分组实现分组本实例根据本实例根据CategoryID分组,并显示分组,并显示 CategoryID值为值为5的列表。的列表。源程序:源程序:LinqSqlQuery.aspx.cs中中btnGroup_Click()部分部分1.protected void btnGroup_Click(object sender,EventArgs e)2.3./按按CategoryId分组后结果存入分组后结果存入results4.var results=from r in db.Produc

    39、t5.group r by r.CategoryId;6.foreach(var g in results)7.8./获取键为获取键为5的列表数据的列表数据9.if(g.Key=5)10.11.var results2=from r in g12.select r;13.GridView1.DataSource=results2;14.GridView1.DataBind();15.16.17.主要涉及主要涉及Count()、Max()、Min()、Average()等方法。当使用等方法。当使用Max()、Min()、Average()等方等方法时,参数常使用法时,参数常使用Lambda表达式

    40、表达式。“Lambda 表达式表达式”是一个匿名函数,它可以是一个匿名函数,它可以包含表达式和语句,并且可用于创建委托或表包含表达式和语句,并且可用于创建委托或表达式目录树类型。达式目录树类型。所有所有 Lambda 表达式都使表达式都使用用 Lambda 运算符运算符=,该运算符读为,该运算符读为“goes to”。该。该 Lambda 运算符的左边是输入参数运算符的左边是输入参数(如果有),右边包含表达式或语句块。(如果有),右边包含表达式或语句块。Lambda 表达式表达式 x=x*x 读作读作“x goes to x times x”。(输入参数)(输入参数)=语句块语句块其中其中“输

    41、入参数输入参数”可以为空、可以为空、1个或多个。当输入个或多个。当输入参数个数为参数个数为1时,可省略括号;时,可省略括号;“=”称为称为Lambda运算符,读作运算符,读作“goes to”;语句块反映了;语句块反映了Lambda表表达式的结果。达式的结果。当把当把Lambda表达式运用于表达式运用于Max()、Min()、Average()等聚合方法时,编译器会自动推断输等聚合方法时,编译器会自动推断输入参数的数据类型。入参数的数据类型。本实例根据本实例根据CategoryID分组统计每组的个数、分组统计每组的个数、LastPrice的最大值、最小值和平均值。的最大值、最小值和平均值。源程

    42、序:源程序:LinqSqlQuery.aspx.cs中中btnPolymerize_Click()部分部分 1.protected void btnPolymerize_Click(object sender,EventArgs e)2.3.var results=from r in db.Product4.group r by r.CategoryId into g5.select new6.7.Key=g.Key,8.Count=g.Count(),9.MaxPrice=g.Max(p=p.Price),10.MinPrice=g.Min(p=p.Price),11.AvgPrice=g.

    43、Average(p=p.Price)12.;13.GridView1.DataSource=results;14.GridView1.DataBind();15.Distinct()形式形式 说明:筛选字段中不相同的值。用于查询不重复说明:筛选字段中不相同的值。用于查询不重复的结果集。的结果集。生成生成SQL语句为:语句为:SELECT DISTINCT City FROM Customersvar q=(from c in db.Customers select c.City).Distinct();语句描述:查询顾客覆盖的国家。语句描述:查询顾客覆盖的国家。Count()形式形式 说明:返

    44、回集合中的元素个数,返回说明:返回集合中的元素个数,返回INT类型。类型。生成生成SQL语句为:语句为:SELECT COUNT(*)FROM 1.简单形式:得到数据库中客户的数量简单形式:得到数据库中客户的数量var q=db.Customers.Count();2.带条件形式:得到数据库中未断货产品的数量带条件形式:得到数据库中未断货产品的数量var q=db.Products.Count(p=!p.Discontinued);LongCount()形式形式 说明:返回集合中的元素个数,返回说明:返回集合中的元素个数,返回LONG类类型。对于元素个数较多的集合可视情况可以选型。对于元素个数

    45、较多的集合可视情况可以选用用LongCount来统计元素个数,它返回来统计元素个数,它返回long类类型,比较精确。型,比较精确。生成生成SQL语句为:语句为:SELECT COUNT_BIG(*)FROM var q=db.Customers.LongCount();Sum()形式形式 说明:返回集合中数值类型元素之和,集合应说明:返回集合中数值类型元素之和,集合应为为INT类型集合。类型集合。生成生成SQL语句为:语句为:SELECT SUM()FROM 1.简单形式:得到所有订单的总运费简单形式:得到所有订单的总运费var q=db.Orders.Select(o=o.Freight).

    46、Sum();2.映射形式:得到所有产品的订货总数映射形式:得到所有产品的订货总数var q=db.Products.Sum(p=p.UnitsOnOrder);Min()形式形式说明:返回集合中元素的最小值。说明:返回集合中元素的最小值。生成生成SQL语句为:语句为:SELECT MIN()FROM 1.简单形式:查找任意产品的最低单价简单形式:查找任意产品的最低单价var q=db.Products.Select(p=p.UnitPrice).Min();2.映射形式:查找任意订单的最低运费:映射形式:查找任意订单的最低运费:var q=db.Orders.Min(o=o.Freight);

    47、3.元素:查找每个类别中单价最低的产品:元素:查找每个类别中单价最低的产品:var categories=from p in db.Products group p by p.CategoryID into g select new CategoryID=g.Key,CheapestProducts=from p2 in g where p2.UnitPrice=g.Min(p3=p3.UnitPrice)select p2 ;Max()形式形式说明:返回集合中元素的最大值;不延迟。:返回集合中元素的最大值;不延迟。生成生成SQL语句为:语句为:SELECT MAX()FROM1.简单形式:查

    48、找任意雇员的最近雇用日期简单形式:查找任意雇员的最近雇用日期var q=db.Employees.Select(e=e.HireDate).Max();2.映射形式:查找任意产品的最大库存量映射形式:查找任意产品的最大库存量var q=db.Products.Max(p=p.UnitsInStock);3.元素:查找每个类别中单价最高的产品元素:查找每个类别中单价最高的产品var categories=from p in db.Products group p by p.CategoryID into g select new g.Key,MostExpensiveProducts=from

    49、p2 in g where p2.UnitPrice=g.Max(p3=p3.UnitPrice)select p2;Average()形式形式说明:返回集合中的数值类型元素的平均值。集合应为数字类型集合,其说明:返回集合中的数值类型元素的平均值。集合应为数字类型集合,其返回值类型为返回值类型为double。生成生成SQL语句为:语句为:SELECT AVG()FROM1.简单形式:得到所有订单的平均运费简单形式:得到所有订单的平均运费var q=db.Orders.Select(o=o.Freight).Average();2.映射形式:得到所有产品的平均单价映射形式:得到所有产品的平均单价

    50、var q=db.Products.Average(p=p.UnitPrice);3.元素:查找每个类别中单价高于该类别平均单价的产品元素:查找每个类别中单价高于该类别平均单价的产品var categories=from p in db.Products group p by p.CategoryID into g select new g.Key,ExpensiveProducts=from p2 in g where p2.UnitPrice g.Average(p3=p3.UnitPrice)select p2 ;多表连接查询使用多表连接查询使用join子句。但对于具有外键子句。但对于具

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:第7章数据访问课件.ppt
    链接地址:https://www.163wenku.com/p-3861395.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库