1、2n本章介绍使用本章介绍使用ASP.NETASP.NETC#C#+SQL Server 2005+SQL Server 2005数据库开数据库开发基于浏览器发基于浏览器/效劳器效劳器B/SB/S模式的网上购物系统模式的网上购物系统n用户可以使用用户可以使用.NET Framework.NET Framework兼容的任何语言来编写用户兼容的任何语言来编写用户自定义内容,如用户自定义函数、存储过程、触发器以及自定义内容,如用户自定义函数、存储过程、触发器以及SQL Server 2005SQL Server 2005中所没有的数据类型。中所没有的数据类型。n使用使用.NET Framework.
2、NET Framework不仅能扩展不仅能扩展SQL ServerSQL Server的数据类型,的数据类型,还能帮助用户实现某些复杂的功能。还能帮助用户实现某些复杂的功能。nADO.NETADO.NET提供了许多方便访问提供了许多方便访问SQL Server 2005SQL Server 2005的对象,利的对象,利用这些内容用户可以轻松实现对用这些内容用户可以轻松实现对SQL ServerSQL Server及其它数据源及其它数据源的数据访问。的数据访问。n 通过本章的学习,应掌握网络程序的设计思路、方法和通过本章的学习,应掌握网络程序的设计思路、方法和过程,同时对过程,同时对SQL Se
3、rver 2005SQL Server 2005有进一步的学习和应用。有进一步的学习和应用。提要提要312.1 C/S12.1 C/S构造与构造与B/SB/S构造构造12.1.1 12.1.1 认识认识C/SC/S构造构造三层三层/构造图构造图4nC/SC/S构造的优点如下:构造的优点如下:n能充分发挥客户端计算机的处理能力,很多工作能充分发挥客户端计算机的处理能力,很多工作可以在客户端处理后再提交给效劳器。可以在客户端处理后再提交给效劳器。n客户端响应速度快。客户端响应速度快。n应用效劳器运行数据负荷较轻,数据平安性较高。应用效劳器运行数据负荷较轻,数据平安性较高。nC/SC/S构造的缺点主
4、要有:构造的缺点主要有:n维护本钱高。维护本钱高。n系统扩展性差。系统扩展性差。n客户端需要安装专用的客户端软件客户端需要安装专用的客户端软件5 12.1.2 12.1.2 认识认识B/SB/S构造构造B/SB/S构造构造6 12.1.3 C/S 12.1.3 C/S构造与构造与B/SB/S构造的区别构造的区别nClient/ServerClient/ServerC/SC/S构造是建立在局域网的根构造是建立在局域网的根底上的,底上的,Browser/ServerBrowser/ServerB/SB/S构造是建立在广构造是建立在广域网的根底上的。域网的根底上的。n两种构造存在以下区别两种构造存在
5、以下区别n硬件环境不同。硬件环境不同。n对平安要求不同。对平安要求不同。n程序架构不同。程序架构不同。n软件重用度下同。软件重用度下同。n系统维护不同。系统维护不同。n处理问题不同。处理问题不同。n用户接口不同。用户接口不同。n信息流不同。信息流不同。712.1.4 BS12.1.4 BS的三层构造的三层构造效劳员只管接待客人效劳员只管接待客人厨师只管烹炒客人要的美食厨师只管烹炒客人要的美食采购员只管按客人需求采购肉,海鲜,蔬菜采购员只管按客人需求采购肉,海鲜,蔬菜他们各负其责共同协作为客人提供美食他们各负其责共同协作为客人提供美食顾客顾客服务员服务员厨师厨师采购员采购员饭店饭店为什么需要三层
6、构造为什么需要三层构造8服务员服务员厨师厨师采购员采购员离职、请假离职、请假其他服其他服务员代替务员代替离职、请假离职、请假离职、请假离职、请假其他厨其他厨师代替师代替其他采其他采购员代替购员代替9服务员服务员厨师厨师采购员采购员三层构造软件模型三层构造软件模型 表示层表示层 业务逻辑层业务逻辑层 数据访问层数据访问层 软件软件系统系统 饭店饭店 10表示层表示层 业务逻辑层业务逻辑层 数据访问层数据访问层 为用户提供为用户提供交互操作界面交互操作界面 负责关键业务的负责关键业务的处理和数据传递处理和数据传递 实现数实现数据库访问据库访问 效劳员效劳员 厨师厨师 采购员采购员 11什么是三层构
7、造什么是三层构造u表示层:为用户提供一种交互式操作界面为用户提供一种交互式操作界面 12什么是三层构造什么是三层构造u业务逻辑层业务逻辑层是表示层与数据访问层之间的桥梁,负责数据处理、传递。是表示层与数据访问层之间的桥梁,负责数据处理、传递。用户请求数据用户请求数据用户请求数据用户请求数据13什么是三层构造什么是三层构造u数据访问层用户请求数据用户请求数据ADO.NETSQL命令命令实现对数据的保存和读取操作实现对数据的保存和读取操作 14三层构造间的依赖关系三层构造间的依赖关系u三层之间依赖关系表示层表示层业务逻辑层业务逻辑层数据访问层数据访问层15三层构造间的数据传递三层构造间的数据传递u
8、三层之间的数据传递方向业务逻辑层业务逻辑层数据访问层数据访问层表示层表示层客客户户请请求求客客户户请请求求响响应应数数据据响响应应数数据据16u三层构造:三层构造:业务逻辑业务逻辑数据访问数据访问两层结构软件模型两层结构软件模型数据数据访问访问业务业务逻辑逻辑用户用户界面界面三层结构软件模型三层结构软件模型当数据库或当数据库或用户界面发用户界面发生改变时需生改变时需要重新开发要重新开发整个系统整个系统当数据库或当数据库或用户界面发用户界面发生改变时不生改变时不需要重新开需要重新开发,只做简发,只做简单调整即可单调整即可u两层构造:用户用户界面界面1712.1.5 12.1.5 如何搭建三层构造
9、如何搭建三层构造 如何搭建表示层、业务逻辑层、数据访问层?如何实现各层之间的相互依赖?要掌握这一切,我们将整个实现过程分为以下步骤要掌握这一切,我们将整个实现过程分为以下步骤 18搭建三层构造的步骤搭建三层构造的步骤1 1、搭建表示层创立一个、搭建表示层创立一个WebWeb应用程序应用程序2 2、搭建业务逻辑层类库、搭建业务逻辑层类库3 3、搭建数据访问层类库、搭建数据访问层类库4 4、添加各层之间的相互依赖、添加各层之间的相互依赖 翻开翻开VS IDEVS IDE环境逐层搭建三层构造环境逐层搭建三层构造 19u宠物商店宠物商店u微软展示微软展示.NET.NET企业开发的企业开发的范例。范例。
10、u与与SunSun的的PetStorePetStore的商业竞的商业竞争。争。u一个小型的电子商务案例。一个小型的电子商务案例。u表达了微软推广的开发思表达了微软推广的开发思想和设计理念。想和设计理念。u分分2222个工程,经典的系统,个工程,经典的系统,从设计的思想到最好的编从设计的思想到最好的编码,学习参考价值很高。码,学习参考价值很高。20架构简介架构简介ASP.NET WebASP.NET WebBLLBLLDALFactoryDALFactoryOracleDALOracleDALSQLServerDALSQLServerDALIDALIDALModelModel表示层表示层业务层业
11、务层数据层数据层 典型的三层构造典型的三层构造21n翻开翻开VSVS开发环境,依次选择开发环境,依次选择 文件文件新建新建工工程程 命令。命令。n在翻开的在翻开的 新建工程新建工程 对话框中,选择工程类型为对话框中,选择工程类型为Visual StudioVisual Studio解决方案解决方案,选择模板为,选择模板为 空白解空白解决方案决方案。填写解决方案的名称,并指定保存位置。填写解决方案的名称,并指定保存位置搭建搭建3 3层构造层构造22n在在“解决方案资源管理器中,右击解决方案名解决方案资源管理器中,右击解决方案名称,在快捷菜单中选择称,在快捷菜单中选择 添加添加“新建网站新建网站
12、n在在“添加新网站对话框中,选择添加新网站对话框中,选择“ASP.NET“ASP.NET WebWeb窗体网站窗体网站,选择位置为,选择位置为 文件系统文件系统,并设置,并设置网站路径网站路径搭建搭建3 3层构造层构造1 1表示层表示层23n在在“解决方案资源管理器中,在解决方案名称解决方案资源管理器中,在解决方案名称上右击鼠标,在弹出的快捷菜单中选择上右击鼠标,在弹出的快捷菜单中选择 添加添加n 新建工程新建工程 命令命令n在翻开的在翻开的“新建工程对话框中,选择工程类型新建工程对话框中,选择工程类型为为“Visual C#“Visual C#,选择模板为,选择模板为“类库。填写类库。填写工
13、程的名称为工程的名称为“#.BLL“#.BLL,该工程用于实现业,该工程用于实现业务逻辑层。此时工程的保存位置已经默认输入了,务逻辑层。此时工程的保存位置已经默认输入了,是刚刚创立空白解决方案时产生的路径是刚刚创立空白解决方案时产生的路径搭建搭建3 3层构造层构造2 2业务逻辑层业务逻辑层24n搭建数据访问层与搭建业务逻辑层的步骤类似,搭建数据访问层与搭建业务逻辑层的步骤类似,不同的是需要重新填写工程名称为不同的是需要重新填写工程名称为“#.DAL“#.DAL搭建搭建3 3层构造层构造3 3数据访问层数据访问层25n在三层构造开发中,通常还会使用模型层。模型在三层构造开发中,通常还会使用模型层
14、。模型层包含所有与数据库中的表相对应的实体类。表层包含所有与数据库中的表相对应的实体类。表示层、业务逻辑层和数据访问层三层之间通过传示层、业务逻辑层和数据访问层三层之间通过传递实体对象来到达数据传递的目的。递实体对象来到达数据传递的目的。n创立模型层的步骤与搭建业务层和数据访问层类创立模型层的步骤与搭建业务层和数据访问层类似,但需重新填写工程名称为似,但需重新填写工程名称为“#.Models“#.Models搭建搭建3 3层构造层构造4 4模型层模型层26n在在“解决方案资源管理器中,三层构造的根本解决方案资源管理器中,三层构造的根本框架已建好。框架已建好。业务逻辑层业务逻辑层数据访问层数据访
15、问层模型层模型层表现层表现层27n添加表示层对业务逻辑层及模型层的依赖:右击添加表示层对业务逻辑层及模型层的依赖:右击“解决方案资源管理器的表示层,在弹出的快解决方案资源管理器的表示层,在弹出的快捷菜单中选择捷菜单中选择 添加引用添加引用 命令命令n在翻开的在翻开的 添加引用添加引用 对话框中,选择对话框中,选择 工程工程 选项选项卡,选中名称为卡,选中名称为“#.BLL“#.BLL和和“#.Models“#.Models的的两个工程,单击两个工程,单击 确定确定 搭建搭建3 3层构造层构造(5)(5)添加各层之间依赖关系添加各层之间依赖关系28n用同样的方法在业务逻辑层添加对数据访问层和用同
16、样的方法在业务逻辑层添加对数据访问层和模型层的依赖,以及数据访问层对模型层的依赖模型层的依赖,以及数据访问层对模型层的依赖n三层构造及各层之间的依赖关系创立完毕三层构造及各层之间的依赖关系创立完毕搭建搭建3 3层构造层构造(5)(5)添加各层之间依赖关系添加各层之间依赖关系29n目前,用于动态目前,用于动态WebWeb应用程序开发的有多种语言,应用程序开发的有多种语言,例如例如ASPASP、ASP.NETASP.NET、PHPPHP和和JSPJSP等。等。nASP.NETASP.NET依据其功能强大、编写容易等特点得到了依据其功能强大、编写容易等特点得到了广泛应用。广泛应用。nASP.NETA
17、SP.NET是微软推出的新一代动态是微软推出的新一代动态WebWeb应用程序开应用程序开发平台,是一种建立动态发平台,是一种建立动态WebWeb应用程序的新技术。应用程序的新技术。n它是它是.NET.NET框架的一局部,可以使用任何框架的一局部,可以使用任何.NET.NET兼容兼容的语言如的语言如Visual BVisual B、C#C#、J#J#、C+C+编写编写ASP.NETASP.NET应用程序。应用程序。概述概述30nWeb FormWeb Form允许在网页根底上建立强大的窗体。允许在网页根底上建立强大的窗体。n当建立页面时,可以使用当建立页面时,可以使用ASP.NETASP.NET
18、效劳端控件来建立常用效劳端控件来建立常用的的UIUI元素,并对它们编程来完成一般的任务。元素,并对它们编程来完成一般的任务。n这些控件允许使用内建可重用的组件和自定义组件来快速这些控件允许使用内建可重用的组件和自定义组件来快速建立建立Web FormWeb Formn代码简单化,提升程序开发人员的工作效率。代码简单化,提升程序开发人员的工作效率。n与与JavaJava、PHPPHP,ASP 3.0ASP 3.0、PerlPerl等相比,等相比,ASP.NETASP.NET具有方便具有方便性、灵活性、性能优、工作效率高、平安性高、完整性强性、灵活性、性能优、工作效率高、平安性高、完整性强及面向对
19、象等特性,是目前主流的网络编程技术之一。及面向对象等特性,是目前主流的网络编程技术之一。3112.2.1 CLR12.2.1 CLR概述概述nCLRCLR是是.NET Framework.NET Framework的核心,的核心,和和JavaJava虚拟机类似,也是虚拟机类似,也是一个运行时环境,负责资源管理一个运行时环境,负责资源管理n提供内存管理、线程管理、平安性和远程处理等核心效劳提供内存管理、线程管理、平安性和远程处理等核心效劳n保证应用和底层操作系统之间必要的别离保证应用和底层操作系统之间必要的别离n可由面向可由面向CLRCLR的所有语言使用的所有语言使用3132.NET.NET的运
20、行环境的运行环境n软件要求软件要求nInternetInternet信息效劳管理器信息效劳管理器IISIISnVisual StudioVisual Studio集成开发环境集成开发环境n硬件的最低要求硬件的最低要求nCPUCPU:Intel Pentium-class 600 MHzIntel Pentium-class 600 MHz以上。以上。n内存:内存:256MB256MB以上。以上。n全部安装包括帮助文档,即全部安装包括帮助文档,即MSDNMSDN,安装盘上,安装盘上至少需要至少需要3.8GB3.8GB磁盘空间,系统盘至少磁盘空间,系统盘至少1GB1GB磁盘空磁盘空间。间。n不含不
21、含MSDNMSDN的安装,安装盘上至少需要的安装,安装盘上至少需要2GB2GB磁盘空间,磁盘空间,系统盘上至少需要系统盘上至少需要1GB1GB磁盘空间。磁盘空间。n显示器:至少支持显示器:至少支持800800 600 600像素,像素,256256色建议色建议10241024 768 768像素,增强色像素,增强色1616位。位。33中的文件类型中的文件类型34nC#C#是一种基于是一种基于.NET.NET平台的面向对象的程序设计语言。在平台的面向对象的程序设计语言。在程序设计过程中,程序设计过程中,C#C#可以定义类、变量、属性、方法、可以定义类、变量、属性、方法、接口、事件等多种元素,遵循
22、面向对象的根本特性,支接口、事件等多种元素,遵循面向对象的根本特性,支持封装、继承及多态。支持根本的数据类型。持封装、继承及多态。支持根本的数据类型。n.NET.NET中对类的组织使用命名空间中对类的组织使用命名空间namespacenamespace,允许自,允许自定义命名空间。程序中所有的元素包含在类中。类是程定义命名空间。程序中所有的元素包含在类中。类是程序设计和运行的最小单位。序设计和运行的最小单位。n命名空间的定义及使用命名空间的定义及使用n类的定义及使用类的定义及使用n变量的定义及使用变量的定义及使用n属性的定义及使用属性的定义及使用n方法的定义及方法调用方法的定义及方法调用n接口
23、的定义与继承接口的定义与继承n事件的定义事件的定义12.2.4 C#12.2.4 C#程序设计根底程序设计根底35nC#C#与与JavaJava的比照的比照n相似:包括了单一继承、接口、与相似:包括了单一继承、接口、与JavaJava几乎同样的语法几乎同样的语法和编译成中间代码再运行的过程。和编译成中间代码再运行的过程。n不同:不同:C#C#借鉴了借鉴了DelphiDelphi的特点,与的特点,与COMCOM直接集成直接集成nC#C#与与C/C+C/C+具有极大的相似性具有极大的相似性n由由C C和和C+C+衍生出来的面向对象的编程语言衍生出来的面向对象的编程语言n在继承在继承C C和和C+C
24、+强大功能的同时去掉了一些复杂特性例强大功能的同时去掉了一些复杂特性例如没有宏、不允许多重继承等如没有宏、不允许多重继承等nC#C#综合了综合了VBVB简单的可视化操作和简单的可视化操作和C+C+的高运行效率的高运行效率12.2.4 C#12.2.4 C#程序设计根底程序设计根底36n网站的根本构造网站的根本构造n 在解决方案资源管理器的表现层中可以看到网站根本构在解决方案资源管理器的表现层中可以看到网站根本构造。网站的默认项主要有:造。网站的默认项主要有:App_DataApp_Data文件夹、文件夹、Default.aspxDefault.aspx文件和文件和Web.configWeb.c
25、onfig文件。文件。nApp_DataApp_Data文件夹。文件夹。ASP.NETASP.NET网站保存的文件夹,用来放置数网站保存的文件夹,用来放置数据库文件。据库文件。nDefault.aspxDefault.aspx文件。默认添加的文件。默认添加的aspasp页面文件,用于设计网页面文件,用于设计网站的界面。站的界面。nweb.configweb.config文件。基于标签的格式配置文件,用于对网站文件。基于标签的格式配置文件,用于对网站的一些工程进展配置。的一些工程进展配置。12.2.5 12.2.5 利用利用C#C#开发数据库应用系统的过程开发数据库应用系统的过程37n添加新项添
26、加新项n在解决方案资源管理器,右击新建的网站解决方案,在解决方案资源管理器,右击新建的网站解决方案,选择选择“添加新项,翻开向导页面,选择要添加的添加新项,翻开向导页面,选择要添加的工程类型,修改工程名称,点击工程类型,修改工程名称,点击“添加按钮即可。添加按钮即可。n在实际开发过程中,可以将不同类型的文件,放在在实际开发过程中,可以将不同类型的文件,放在不同的文件夹以区分不同的层次。不同的文件夹以区分不同的层次。38n添加数据库添加数据库n假设使用与假设使用与Visual StudioVisual Studio集成的集成的SQL SQL ServerServer数据库,系统默认将数据库添加在
27、数据库,系统默认将数据库添加在App_DataApp_Data文件夹下。右击文件夹下。右击App_DataApp_Data文件夹,文件夹,选择选择“添加新项,翻开向导页面。添加新项,翻开向导页面。n在向导页面,选择数据库类型,修改数据库在向导页面,选择数据库类型,修改数据库实例名称,点击实例名称,点击“添加按钮。添加成功后,添加按钮。添加成功后,在在App_DataApp_Data文件夹下可看到该数据库文件。文件夹下可看到该数据库文件。在效劳器资源管理器窗口,也可以看到新添在效劳器资源管理器窗口,也可以看到新添加的数据连接加的数据连接 39n界面设计界面设计 WebWeb窗体网站页面分为源页面
28、和设计页面窗体网站页面分为源页面和设计页面 设计页面为可视化开发界面,遵循所见即所得的开发设计页面为可视化开发界面,遵循所见即所得的开发理念,通过拖拽工具箱控件,直接布局界面。理念,通过拖拽工具箱控件,直接布局界面。如果对如果对htmlhtml代码熟悉的话,可以在源页面编辑界面代码熟悉的话,可以在源页面编辑界面.40n业务逻辑处理的设计编码业务逻辑处理的设计编码n与页面关系严密的业务逻辑代码,通常在页面文件对应与页面关系严密的业务逻辑代码,通常在页面文件对应的的.cs.cs文件中编写,如文件中编写,如Main.aspxMain.aspx界面对应界面对应Main.aspx.csMain.aspx
29、.cs文文件。件。41n后台业务逻辑后台业务逻辑n与数据库关系密切的处理过程,可以在页面文件的与数据库关系密切的处理过程,可以在页面文件的.cs.cs文件文件中编写代码完成,也可以建立单独的业务逻辑类,通过传中编写代码完成,也可以建立单独的业务逻辑类,通过传递消息的方式,将前台业务逻辑处理过的数据传递过来,递消息的方式,将前台业务逻辑处理过的数据传递过来,再通过该层业务逻辑类进展数据库的存取。再通过该层业务逻辑类进展数据库的存取。42n数据库访问设计数据库访问设计n对数据库的访问,如果数据库操作代码是在页面文件对数据库的访问,如果数据库操作代码是在页面文件的的.cs.cs文件,或者单独的业务逻
30、辑类中编写,在每次进文件,或者单独的业务逻辑类中编写,在每次进展数据库访问时,需要设置数据库连接参数,建立并翻展数据库访问时,需要设置数据库连接参数,建立并翻开数据库连接。开数据库连接。n另一种方法是建立单独的数据库访问类,该类中设置数另一种方法是建立单独的数据库访问类,该类中设置数据库连接参数,并返回一个数据库连接对象。其他类只据库连接参数,并返回一个数据库连接对象。其他类只要获取该对象即可直接使用,所以公共的数据库访问类要获取该对象即可直接使用,所以公共的数据库访问类一般为一般为staticstatic类。类。43n创立实体类创立实体类n模型层中,与数据库中每个表相对应的有一个实体类模型层
31、中,与数据库中每个表相对应的有一个实体类n如:将默认的类名如:将默认的类名Class1.csClass1.cs重命名为重命名为“User.cs“User.cs其其它实体类可通过它实体类可通过“添加添加“类,该实体类与数据类,该实体类与数据库中的表库中的表UsersUsers相对应。相对应。3 3层架构各层之间的协同工作层架构各层之间的协同工作每个成员变量对每个成员变量对应表中的一列应表中的一列44n创立数据访问类创立数据访问类n针对模型层中的每个实体类,数据访问层有一个对应的针对模型层中的每个实体类,数据访问层有一个对应的数据访问类数据访问类n如:针对如:针对UserUser实体类,创立一个对
32、应的实体类,创立一个对应的UserServiceUserService类,类,用于对数据表用于对数据表UsersUsers的数据处理的数据处理3 3层架构各层之间的协同工作层架构各层之间的协同工作45n创立业务逻辑类创立业务逻辑类n针对模型层中的每个实体类,业务逻辑层中也有一个对针对模型层中的每个实体类,业务逻辑层中也有一个对应的类。应的类。n如,针对如,针对UserUser实体类,创立一个对应的实体类,创立一个对应的UserManagerUserManager类,类,在其中添加用于登录验证的业务方法在其中添加用于登录验证的业务方法3 3层架构各层之间的协同工作层架构各层之间的协同工作46n编
33、写表示层代码编写表示层代码3 3层架构各层之间的协同工作层架构各层之间的协同工作47n运行程序前,还需设置启开工程。运行程序前,还需设置启开工程。n在在 解决方案资源管理器解决方案资源管理器 中的表示层上单击鼠标右键,中的表示层上单击鼠标右键,在弹出的快捷菜单中选择在弹出的快捷菜单中选择 设为启开工程设为启开工程 命令,将表示命令,将表示层设置为启开工程层设置为启开工程n右击右击Login.aspxLogin.aspx,把登录页面设为起始页,把登录页面设为起始页3 3层架构各层之间的协同工作层架构各层之间的协同工作48数据库开发数据库开发nADO.NETADO.NET提供对提供对Microso
34、ft SQL ServerMicrosoft SQL Server数据源以及通过数据源以及通过OLE OLE DBDB和和XMLXML公开数据源的一致访问。公开数据源的一致访问。nADO.NETADO.NET是一组向是一组向.NET.NET程序开发者公开数据访问效劳的类。程序开发者公开数据访问效劳的类。ADO.NETADO.NET为创立分布式数据共享应用程序提供了一组丰富为创立分布式数据共享应用程序提供了一组丰富的组件。它提供了对关系数据、的组件。它提供了对关系数据、XMLXML和应用程序数据的访和应用程序数据的访问,因此是问,因此是.NET Framework.NET Framework中不
35、可缺少的重要组成局部。中不可缺少的重要组成局部。ADO.NETADO.NET支持多种开发需求,包括创立由应用程序、工具、支持多种开发需求,包括创立由应用程序、工具、语言或语言或InternetInternet浏览器使用的前端数据库客户端和中间层浏览器使用的前端数据库客户端和中间层业务对象。另外,由于业务对象。另外,由于ADO.NETADO.NET被集成到被集成到.NET Framework.NET Framework中,所以它可用于任何中,所以它可用于任何.NET.NET语言,例如语言,例如C#C#。n应用程序开发者可以使用应用程序开发者可以使用ADO.NETADO.NET来连接各种数据源,并
36、来连接各种数据源,并检索、处理和更新所包含的数据。检索、处理和更新所包含的数据。nADO.NETADO.NET主要包括主要包括ConnectionConnection、CommandCommand、DataReaderDataReader、DataSetDataSet、DataAdapterDataAdapter对象。对象。49这这5 5个对象提供了个对象提供了2 2种读种读取数据库的方式:一种取数据库的方式:一种是利用是利用ConnetctionConnetction、CommandCommand和和DataReaderDataReader对对象,这种方式只能读取象,这种方式只能读取数据库,
37、不能修改记录,数据库,不能修改记录,假设只是查询记录,这假设只是查询记录,这种方式的效率更高些;种方式的效率更高些;第二种是利用第二种是利用ConnectionConnection、CommandCommand、DataAdapterDataAdapter和和DataSetDataSet对象,这种方式更灵活,对象,这种方式更灵活,可以对数据库进展各种可以对数据库进展各种操作。操作。5012.3.1 12.3.1 使用开发数据库应用程序的一般步骤使用开发数据库应用程序的一般步骤 1 1根据使用的数据源,确定使用的数据提供程序;根据使用的数据源,确定使用的数据提供程序;2 2建立与数据源的连接,需
38、使用建立与数据源的连接,需使用ConnectionConnection对对象;象;3 3执行对数据源的操作命令,通常是执行对数据源的操作命令,通常是SQLSQL命令,命令,需使用需使用CommandCommand对象;对象;4 4使用数据集对获得的数据进展操作,需使用使用数据集对获得的数据进展操作,需使用DataReaderDataReader、DataSetDataSet等对象;等对象;5 5向用户显示数据,需使用数据控件。向用户显示数据,需使用数据控件。51ConnectionConnection对象用于连接到数据库和管理对数据库的事务对象用于连接到数据库和管理对数据库的事务 Connec
39、tionString ConnectionString属性属性 Database Database属性属性 DataSource DataSource属性属性 Open Open方法方法 Close Close方法方法 对于不同的数据库,对于不同的数据库,ADO.NETADO.NET采用不同的采用不同的ConnectionConnection对象进对象进展连接。展连接。SqlConnectionSqlConnectionOleDbConnectionOleDbConnectionOdbcConnectionOdbcConnectionOracleConnection OracleConnect
40、ion 翻开连接后获取当前数据库的翻开连接后获取当前数据库的名称,或翻开连接前获取连接名称,或翻开连接前获取连接字符串中指定的数据库名字符串中指定的数据库名获取要连接的数据获取要连接的数据库效劳器的名称库效劳器的名称52SqlConnectionSqlConnection连接连接SQL ServerSQL Server数据库,如数据库,如SQL Server 2000SQL Server 2000、SQL SQL Server 2005Server 2005、SQL Server 2008SQL Server 2008及以上版本及以上版本OracleConnectionOracleConnec
41、tion连接连接OracleOracle数据库,如数据库,如Oracle 10gOracle 10g、11g11gOleDbConnectionOleDbConnection连接支持连接支持OLE DBOLE DB的数据库,如的数据库,如AccessAccessOdbcConnectionOdbcConnection连接任何支持连接任何支持ODBCODBC的数据库,如的数据库,如MySQLMySQL数据库数据库ConnectionConnection各个对象类功能各个对象类功能53【例】【例】实例环境:实例环境:SQL ServerSQL Server效劳器的名称为效劳器的名称为LISALIS
42、A;登陆模式为;登陆模式为WindowsWindows身份验证模式;连接的数据库为身份验证模式;连接的数据库为CompanySalesCompanySales。配置配置SqlConnectionSqlConnection对象的对象的ConnectionStringConnectionString属性的字符串如下:属性的字符串如下:SERVER=LISA;SERVER=LISA;Initial Catalog=CompanySales;Initial Catalog=CompanySales;Integrated Security=SSPI;Integrated Security=SSPI;【例
43、】实例环境如下:【例】实例环境如下:SQL ServerSQL Server效劳器的效劳器的IPIP地址为地址为192.168.4.1192.168.4.1;登;登陆模式为陆模式为SQL ServerSQL Server身份验证模式;连接的数据库为身份验证模式;连接的数据库为CompanySalesCompanySales;登陆的帐户名称为登陆的帐户名称为sasa;登陆密码为:;登陆密码为:123456123456;配置配置SqlConnectionSqlConnection对象的对象的ConnectionStringConnectionString属性的字符串如下:属性的字符串如下:SERV
44、ER=192.168.4.1;SERVER=192.168.4.1;Initial Catalog=CompanySales;Initial Catalog=CompanySales;User ID=sa;Password=123456;User ID=sa;Password=123456;用用SSPI SSPI 支持的平安包支持的平安包 进展用户身份验证,进展用户身份验证,SSPISSPI是是 Microsoft Microsoft的平安支持提供器接口,的平安支持提供器接口,是获得验证、信息完整性、信息隐私等集是获得验证、信息完整性、信息隐私等集成平安效劳的公用成平安效劳的公用API API
45、 54n使用使用SqlConnectionSqlConnection对象连接对象连接SQL Server 2005SQL Server 2005数据库数据库n首先定义一个新的首先定义一个新的SqlConnectionSqlConnection对象对象nSqlConnection mySqlConnection SqlConnection mySqlConnection;n设置一个针对设置一个针对Sql Server 2005Sql Server 2005数据库的连接字符串数据库的连接字符串nstring connectionString=“server=localhoststring conn
46、ectionString=“server=localhost;database=teachingdatabase=teaching;uid=sauid=sa;pwd=sapwd=sa;n将数据库连接字符串传入将数据库连接字符串传入SqlConnection(SqlConnection()构造函数构造函数nmySqlConnection=new mySqlConnection=new SqlConnection(connectionString)SqlConnection(connectionString);n翻开数据库连接翻开数据库连接n mySqlConnection.Open(mySqlC
47、onnection.Open();n关闭数据库连接关闭数据库连接nmySqlConnection.Close(mySqlConnection.Close();55使用使用ConnectionConnection对象与数据源建立连接后,可使用对象与数据源建立连接后,可使用CommandCommand对象对对象对数据源执行查询、添加、删除和修改等各种操作。数据源执行查询、添加、删除和修改等各种操作。CommandCommand对象的对象的常用属性和方法如下。常用属性和方法如下。CommandTypeCommandType属性属性 CommandTextCommandText属性属性 Connect
48、ionConnection属性属性 ExecuteNonQueryExecuteNonQuery方法方法 ExecuteReaderExecuteReader方法方法 CommandCommand对象主要可以用来对数据库发出一些指令,例如可以对数对象主要可以用来对数据库发出一些指令,例如可以对数据库传递查询、新增、修改、删除数据等指令,以及呼叫存在数据库传递查询、新增、修改、删除数据等指令,以及呼叫存在数据库中的预存程序等据库中的预存程序等DataSetCommandDataSetCommand对象主要是在数据源以及对象主要是在数据源以及DataSetDataSet之间执行数据传之间执行数据传
49、输的工作,它可以透过输的工作,它可以透过CommandCommand对象传递命令后,将取得的数据放对象传递命令后,将取得的数据放入入DataSetDataSet对象。对象。CommandCommand对象要执行对象要执行命令的类型命令的类型对数据源执行的对数据源执行的SQLSQL语句语句或存储过程名或表名或存储过程名或表名CommandCommand对象使用的对象使用的ConnectionConnection对象的名称对象的名称执行执行SQLSQL语句并返回语句并返回受影响的行数受影响的行数执行返回数据集的执行返回数据集的SelectSelect语句语句56 例例 使用使用CommandCom
50、mand对象向数据库中的表添加数据。对象向数据库中的表添加数据。SqlConnection mySqlConnection=new SqlConnection mySqlConnection=new SqlConnection(connectionString)SqlConnection(connectionString);mySqlConnection.Open(mySqlConnection.Open();string sqlstr=“insert into course(cname)string sqlstr=“insert into course(cname)values(values