第三篇数据库编程 第一章基本概念 ASPNET中的 ADONET和ASP中的ADO相对应,它是ADO的改进版本。在 ADO NET 中,通过 Managed Provider所提供的应用程序编程接口(API),可以轻松地访问各种数据源 的数据,包括 OLEDB所支持的和ODBC支持的数据库 下面介绍 ADO. NET中最重要的两个概念: Managed Provider和 DataS 3.1.1 Managed Provider 过去,通过ADO的数据存取采用了两层的基于连接的编程模型。随着多层应用的需 求不但增加,程序员需要一个无连接的模型。 ADO. NET就应运而生了。 ADONET的 Managed P' rovider就是一个多层结构的无连接的一致的编程模型 Dalce lanman Explan careen 典DoBr PIpetle Updak conman Panel Dele cannan! Paneer Propert Talel,toppin Cctm nlypplngs cdunnlappr Managed Provider提供了 DataSet和数据中心(如 MS SQL)之间的联系。 Managed Provider包含了存取数据中心(数据库)的一系列接口。主要有三个部件: ●连接对象 Connection、命令对象 Command、参数对象 Parameter提供了数据源和 DataSet之间的接口。 DataSetcommand接口定义了数据列和表映射,并最终取回 个 DataSet ●数据流提供了高性能的、前向的数据存取机制。通过 IdataReader,你可以轻松而 高效地访问数据流 更底层的对象允许你连接到数据库,然后执行数据库系统一级的特定命令。 过去,数据处理主要依赖于两层结构,并且是基于连接的。连接断开,数据就不能再 存取。现在,数据处理被延伸到三层以上的结构,相应地,程序员需要切换到无连接的应用 模型。这样, DataSetCommand就在 ADO. NET中扮演了极其重要的角色。它可以取回一个
第三篇 数据库编程 第一章 基本概念 ASP.NET中的ADO.NET 和ASP中的ADO相对应,它是ADO的改进版本。在ADO.NET 中,通过 Managed Provider 所提供的应用程序编程接口(API),可以轻松地访问各种数据源 的数据,包括 OLEDB 所支持的和 ODBC 支持的数据库。 下面介绍 ADO.NET 中最重要的两个概念:Managed Provider 和 DataSet。 3.1.1 Managed Provider 过去,通过 ADO 的数据存取采用了两层的基于连接的编程模型。随着多层应用的需 求不但增加,程序员需要一个无连接的模型。ADO.NET 就应运而生了。ADO.NET 的 Managed Provider 就是一个多层结构的无连接的一致的编程模型。 Managed Provider 提供了 DataSet 和数据中心(如 MS SQL)之间的联系。Managed Provider 包含了存取数据中心(数据库)的一系列接口。主要有三个部件: ⚫ 连接对象 Connection、命令对象 Command、参数对象 Parameter 提供了数据源和 DataSet 之间的接口。DataSetCommand 接口定义了数据列和表映射,并最终取回一 个 DataSet。 ⚫ 数据流提供了高性能的、前向的数据存取机制。通过 IdataReader,你可以轻松而 高效地访问数据流。 ⚫ 更底层的对象允许你连接到数据库,然后执行数据库系统一级的特定命令。 过去,数据处理主要依赖于两层结构,并且是基于连接的。连接断开,数据就不能再 存取。现在,数据处理被延伸到三层以上的结构,相应地,程序员需要切换到无连接的应用 模型。这样,DataSetCommand 就在 ADO.NET 中扮演了极其重要的角色。它可以取回一个
DataSet,并维护一个数据源和 DataSet之间的“桥”,以便于数据访问和修改、保存 DataSetCommand自动将数据的各种操作变换到数据源相关的合适的SQL语句。从图上可以 看出,四个 Command对象: Selectcommand、 Insert command、 Update Command、 DeleteCommand分别代替了数据库的查询、插入、更新、删除操作 Managed Provider利用本地的 OLEDB通过 COM Interop来实现数据存取。 OLEDB支 持自动的和手动的事务处理。所以, Managed Provider也提供了事务处理的能力。 3.1.2 DataSet DataSet是 ADONET的中心概念。你可以把 DataSet想象成内存中的数据库。正是由于 DataSet,才使得程序员在编程序时可以屏蔽数据库之间的差异,从而获得一致的编程模型: Datcet Re scoleco Erte i d dP ppe齿 Tabasco影c1 DatTabP DeRuta CiRE Ltbi p are itRe tons constant ColI IS Et nded lope tes Darcon I DataSet支持多表、表间关系、数据约東等等。这些和关系数据库的模型基本一致 3.1.2.1 Tablescol lection对象 DataSet里的表(Iabe)是用 Data Table来表示的。 DataSet可以包含许多 DataTable,这些 DataTable构成 TablesCollection对象 DataTable定义在 System. Data中,它代表内存中的一张表( Table)。它包含一个称为
DataSet,并维护一个数据源和 DataSet 之间的“桥”,以便于数据访问和修改、保存。 DataSetCommand 自动将数据的各种操作变换到数据源相关的合适的 SQL 语句。从图上可以 看出,四个 Command 对 象 : SelectCommand 、 InsertCommand 、 UpdateCommand 、 DeleteCommand 分别代替了数据库的查询、插入、更新、删除操作。 Managed Provider 利用本地的 OLEDB 通过 COM Interop 来实现数据存取。OLEDB 支 持自动的和手动的事务处理。所以,Managed Provider 也提供了事务处理的能力。 3.1.2 DataSet DataSet 是 ADO.NET 的中心概念。你可以把 DataSet 想象成内存中的数据库。正是由于 DataSet,才使得程序员在编程序时可以屏蔽数据库之间的差异,从而获得一致的编程模型: DataSet 支持多表、表间关系、数据约束等等。这些和关系数据库的模型基本一致。 3.1.2.1 TablesCollection 对象 DataSet 里的表(Table)是用 DataTable 来表示的。DataSet 可以包含许多 DataTable,这些 DataTable 构成 TablesCollection 对象。 DataTable 定义在 System.Data 中,它代表内存中的一张表(Table)。它包含一个称为
ColumnsCollection的对象,代表数据表的各个列的定义。 DataTable也包含一个 RowsCollection对象,这个对象含有 DataTable中的所有数据。 DataTable保存有数据的状态。通过存取 Data Table的当前状态,你可以知道数据是否被 更新或者删除。 3.1.2.2 Relationscol lection对象 各个 DataTable之间的关系通过 DataRelation来表达,这些 DataRelation形成一个集合, 称为 Relations collection,它是 DataSet的子对象。 Data Relation表达了数据表之间的主键 外键关系,当两个有这种关系的表之中的某一个表的记录指针移动时,另一个表的记录指针 也随之移动。同时,一个有外键的表的记录更新时,如果不满足主键外键约束,更新就会 失败 通过建立各个 Data table之间的 DataRelation,可以轻松实现在ASP中需要通过 DataSharing才能实现的功能 3.1.2.3 ExtendedProperties对象 在这个对象里可以定义特定的信息,比如密码、更新时间等 3.1.24小结 本章首先介绍在 asp. net中数据库编程的两个基本概念 Managed Provider和 DataSet。在 asp. net中, DataSet屏蔽了具体数据源和应用之间差异,使得应用摆脱了具体数据的束缚 在我们今后的数据库编程中,可以把 DataSet视为远端数据库在内存中的镜像,把繁琐的数 据库操作任务交给 Managed Provider去做 第二章通过AD0NET访问数据库 3.2.1AD0.NET访问数据库的步骤 不论从语法来看,还是从风格和设计目标来看, ADO NET都和ADO有显著的不同。 在ASP中通过ADO访问数据库,一般要通过以下四个步骤 创建一个到数据库的链路,即 ADO Connection 2、查询一个数据集合,即执行SQL,产生一个 Recordset 3、对数据集合进行需要的操作; 4、关闭数据链路 在 ADO. NET里,这些步骤有很大的变化。 ADO NET的最重要概念之一是 DataSet DataSet是不依赖于数据库的独立数据集合。所谓独立,就是:即使断开数据链路,或者关
ColumnsCollection 的对象,代表数据表的各个列的定义。 DataTable 也包含一个 RowsCollection 对象,这个对象含有 DataTable 中的所有数据。 DataTable 保存有数据的状态。通过存取 DataTable 的当前状态,你可以知道数据是否被 更新或者删除。 3.1.2.2 RelationsCollection 对象 各个 DataTable 之间的关系通过 DataRelation 来表达,这些 DataRelation 形成一个集合, 称为 RelationsCollection,它是 DataSet 的子对象。DataRelation 表达了数据表之间的主键- 外键关系,当两个有这种关系的表之中的某一个表的记录指针移动时,另一个表的记录指针 也随之移动。同时,一个有外键的表的记录更新时,如果不满足主键-外键约束,更新就会 失败。 通过建立各个 DataTable 之间的 DataRelation,可以轻松实现在 ASP 中需要通过 DataShaping 才能实现的功能。 3.1.2.3 ExtendedProperties 对象 在这个对象里可以定义特定的信息,比如密码、更新时间等。 3.1.2.4 小结 本章首先介绍在 asp.net 中数据库编程的两个基本概念 Managed Provider 和 DataSet。在 asp.net 中,DataSet 屏蔽了具体数据源和应用之间差异,使得应用摆脱了具体数据的束缚。 在我们今后的数据库编程中,可以把 DataSet 视为远端数据库在内存中的镜像,把繁琐的数 据库操作任务交给 Managed Provider 去做。 第二章 通过 ADO.NET 访问数据库 3.2.1 ADO.NET 访问数据库的步骤 不论从语法来看,还是从风格和设计目标来看,ADO.NET 都和 ADO 有显著的不同。 在 ASP 中通过 ADO 访问数据库,一般要通过以下四个步骤: 1、 创建一个到数据库的链路,即 ADO.Connection; 2、 查询一个数据集合,即执行 SQL,产生一个 Recordset; 3、 对数据集合进行需要的操作; 4、 关闭数据链路。 在 ADO.NET 里,这些步骤有很大的变化。ADO.NET 的最重要概念之一是 DataSet。 DataSet 是不依赖于数据库的独立数据集合。所谓独立,就是:即使断开数据链路,或者关
闭数据库, DataSet依然是可用的。如果你在ASP里面使用过非连接记录集合( Connectionless Recordset),那么 DataSet就是这种技术的最彻底的替代品。 有了 DataSet,那么, ADO. NET访问数据库的步骤就相应地改变了 创建一个数据库链路 请求一个记录集合 把记录集合暂存到 DataSet 如果需要,返回第2步;( DataSet可以容纳多个数据集合) 关闭数据库链路 在 DataSet上作所需要的操作 DataSet在内部是用XML来描述数据的。由于XML是一种平台无关、语言无关的数据 描述语言,而且可以描述复杂数据关系的数据,比如父子关系的数据,所以 DataSet实际上 可以容纳具有复杂关系的数据,而且不再依赖于数据库链路。 3.2.2AD0.NET对象模型概览 3.2.21 ADOConnection ADO NET有许多对象,我们先看看最基本的也最常用的几个。首先看看 ADOConnection。和ADO的 ADODB Connection对象相对应, ADOConnection维护一个到 数据库的链路。为了使用 ADO. NET对象,我们需要引入两个 NameSpace: System. Data和 System Data. ADO,使用 ASPNET的 Import指令就可以了 和ADO的 Connection对象类似, ADOConnection对象也有Open和 Close两个方法。下面 的这个例子展示了如何连接到本地的 MS SQL Server上的Pubs数据库。 设置连接串 ConnString="Provider=SQLOLEDB; Data Source=(local); " Initial Catalog=pubs; User ID=sa 创建对象 ADOConnection Dim objConn as ADOConnection obj Conn= New ADOConnection 设置 ADOCOnnection对象的连接串 objConn. ConnectionString= strConnString
闭数据库,DataSet 依然是可用的。如果你在 ASP 里面使用过非连接记录集合(Connectionless Recordset),那么 DataSet 就是这种技术的最彻底的替代品。 有了 DataSet,那么,ADO.NET 访问数据库的步骤就相应地改变了: ⚫ 创建一个数据库链路; ⚫ 请求一个记录集合; ⚫ 把记录集合暂存到 DataSet; ⚫ 如果需要,返回第 2 步;(DataSet 可以容纳多个数据集合) ⚫ 关闭数据库链路; ⚫ 在 DataSet 上作所需要的操作。 DataSet 在内部是用 XML 来描述数据的。由于 XML 是一种平台无关、语言无关的数据 描述语言,而且可以描述复杂数据关系的数据,比如父子关系的数据,所以 DataSet 实际上 可以容纳具有复杂关系的数据,而且不再依赖于数据库链路。 3.2.2 ADO.NET 对象模型概览 3.2.2.1 ADOConnection ADO.NET 有许多对象,我们先看看最基本的也最常用的几个。首先看看 ADOConnection。和 ADO 的 ADODB.Connection 对象相对应,ADOConnection 维护一个到 数据库的链路。为了使用 ADO.NET 对象,我们需要引入两个 NameSpace:System.Data 和 System.Data.ADO,使用 ASP.NET 的 Import 指令就可以了: 和 ADO 的 Connection 对象类似,ADOConnection 对象也有 Open 和 Close 两个方法。下面 的这个例子展示了如何连接到本地的 MS SQL Server 上的 Pubs 数据库。 <% '设置连接串... Dim strConnString as String strConnString = "Provider=SQLOLEDB; Data Source=(local); " & _ "Initial Catalog=pubs; User ID=sa" '创建对象 ADOConnection Dim objConn as ADOConnection objConn = New ADOConnection '设置 ADOCOnnection 对象的连接串 objConn.ConnectionString = strConnString
obj Conn. Open打开数据链路 数据库操作代码省略 obj Conn. Close(‘关闭数据链路 obj Conn= Nothing·清除对象 % 上面的代码和ADO没有什么太大的差别。应该提到的是, ADO NET提供了两种数据库连 接方式:ADO方式和SQL方式。这里我们是通过ADO方式连接到数据库。关于建立数据 库连接的详细信息,我们在后面的篇幅中将会讲到 3.2.22 ADODatasetcommand 另一个不得不提到的 ADO NET对象是 ADODatasetCommand,这个对象专门负责创建 我们前面提到的 DataSet对象。另一个重要的 ADO.NET对象是 Dataview,它是 DataSet的 个视图。还记得 DataSet可以容纳各种各种关系的复杂数据吗?通过 Dataview,我们可以 把 DataSet的数据限制到某个特定的范围。 下面的代码展示了如何利用 ADODatasetcommand为 DataSet填充数据 创建SQL字符串 Dim str SQL as String="SELECT* FROM authors 创建对象 ADODataset Command和 Dataset Dim objDSCommand as ADODataset Command Dim obj Dataset as Dataset= New Dataset objDS Command=New ADODatasetCommand(strS QL, obj Conn) 填充数据到 Dataset 并将数据集合命名为" Author Information" obj DSCommand Fill DataSet(obj Dataset, "Author Information") 323显示 Dataset 前面我们己经把数据准备好。下面我们来看看如何显示 Dataset中的数据。在 ASPNET 中,显示 DataSet的常用控件是 Datagrid,它是 ASPNET中的一个HIML控件,可以很好 地表现为一个表格,表格的外观可以任意控制,甚至可以分页显示。这里我们只需要简单地 使用它 asp Data Grid id="Data"runat="server"/> 剩下的任务就是把 Dataset绑定到这个 Datagrid,绑定是 ASPNET的重要概念,我们将另文 讲解。一般来说,你需要把一个 Dataview绑定到 DataGrid,而不是直接绑定 Dataset。好在
objConn.Open() '打开数据链路 '数据库操作代码省略 objConn.Close() '关闭数据链路 objConn = Nothing '清除对象 %> 上面的代码和 ADO 没有什么太大的差别。应该提到的是,ADO.NET 提供了两种数据库连 接方式:ADO 方式和 SQL 方式。这里我们是通过 ADO 方式连接到数据库。关于建立数据 库连接的详细信息,我们在后面的篇幅中将会讲到。 3.2.2.2 ADODatasetCommand 另一个不得不提到的 ADO.NET 对象是 ADODatasetCommand,这个对象专门负责创建 我们前面提到的 DataSet 对象。另一个重要的 ADO.NET 对象是 Dataview,它是 DataSet 的 一个视图。还记得 DataSet 可以容纳各种各种关系的复杂数据吗?通过 Dataview,我们可以 把 DataSet 的数据限制到某个特定的范围。 下面的代码展示了如何利用 ADODatasetCommand 为 DataSet 填充数据: '创建 SQL 字符串 Dim strSQL as String = "SELECT * FROM authors" '创建对象 ADODatasetCommand 和 Dataset Dim objDSCommand as ADODatasetCommand Dim objDataset as Dataset = New Dataset objDSCommand = New ADODatasetCommand(strSQL, objConn) '填充数据到 Dataset '并将数据集合命名为 "Author Information" objDSCommand.FillDataSet(objDataset, "Author Information") 3.2.3 显示 Dataset 前面我们已经把数据准备好。下面我们来看看如何显示 Dataset 中的数据。在 ASP.NET 中,显示 DataSet 的常用控件是 DataGrid,它是 ASP.NET 中的一个 HTML 控件,可以很好 地表现为一个表格,表格的外观可以任意控制,甚至可以分页显示。这里我们只需要简单地 使用它: 剩下的任务就是把 Dataset 绑定到这个 DataGrid,绑定是 ASP.NET 的重要概念,我们将另文 讲解。一般来说,你需要把一个 Dataview 绑定到 DataGrid,而不是直接绑定 Dataset。好在
Dataset有一个缺省的 Dataview,下面我们就把它和 Datagrid绑定 My First Data Grid DataSource objDataset. Tables("Author Information"). DefaultView MyFirst Data Grid Databind( 324完整的代码 (code\122301. aspx) %( Import Namespace="System. Data"%> 设置连接串 Dim str ConnString as String strConnString="Provider=SQLOLEDB; Data Source=(local); " lbs: User Id=sa 创建对象 ADOConnection Dim obj Conn as ADOConnection b j Conn= New AdOConnection 设置 ADOCOnnection对象的连接串 objConn. Connection String=strConnString obj Conn. Open("打开数据链路 创建SQL字符串 Dim strSQL as String="SELECT* FROM authors 创建对象 ADODataset Command和 Dataset Dim objDSCommand as ADODataset Command Dim ob Dataset as Dataset=New Dataset objDS Command= New ADODataset Command(strSQL, obj Conn) 填充数据到 Dataset 并将数据集合命名为" Author information" obj DS Command. Fill DataSet(objDataset, "Author Information") obj Conn. Close‘关闭数据链路 obj Conn= Nothing·清除对象
Dataset 有一个缺省的 Dataview,下面我们就把它和 DataGrid 绑定: MyFirstDataGrid.DataSource = _ objDataset.Tables("Author Information").DefaultView MyFirstDataGrid.DataBind() 3.2.4 完整的代码 (code\122301.aspx) <% '设置连接串... Dim strConnString as String strConnString = "Provider=SQLOLEDB; Data Source=(local); " & _ "Initial Catalog=pubs; User ID=sa" '创建对象 ADOConnection Dim objConn as ADOConnection objConn = New ADOConnection '设置 ADOCOnnection 对象的连接串 objConn.ConnectionString = strConnString objConn.Open() '打开数据链路 '创建 SQL 字符串 Dim strSQL as String = "SELECT * FROM authors" '创建对象 ADODatasetCommand 和 Dataset Dim objDSCommand as ADODatasetCommand Dim objDataset as Dataset = New Dataset objDSCommand = New ADODatasetCommand(strSQL, objConn) '填充数据到 Dataset '并将数据集合命名为 "Author Information" objDSCommand.FillDataSet(objDataset, "Author Information") objConn.Close() '关闭数据链路 objConn = Nothing '清除对象
Authors DataSource= objDataset. Tables("Author Information").DefaultView Authors. Data Bindo asp Data Grid id="Authors"runat="server"1> 325运行效果 ahttp://localhost/expert/122301.aspx-microsoftInternetExplorer 查看y收藏()工具①帮助 中后退·中③团备③搜索囟收藏③史·刍 地址)]http://localhos2124 转到链接 au id au_ lname au_fname phon tatezip contract 408 32- White Johnson 496-10932 Bigge Menl Park CA 94025 True 117 213 415 46- Green 30963rd Marjorie 986- 8915 7020 St. #411 Jakl and CA 94618 True 238- 415 arson 548-589 Darwin 723n berkeley Ca 94705 True 7766 267- 40822 41-0 Leary Michael 286- Clevel and San Jose CA 95128 True 2428Av.#14 274 415 80- Strai Dean 5420 9391 834 College Av. Oakland CA 94609 True 包完成 本地I Intranet 326小结 本章详细介绍了如何使用 ADO NET方法访问数据库的步骤,并给出了一个具体的例子 演示如何从服务器端取得pubs数据库中的 authors表的数据到本地的 DataSet中,然后使用 Datagrid控件绑定到 DataSet上,最后在客户端显示。虽然这还比较简单,但这却是最常用
Authors.DataSource = _ objDataset.Tables("Author Information").DefaultView Authors.DataBind() %> 3.2.5 运行效果 3.2.6 小结 本章详细介绍了如何使用 ADO.NET 方法访问数据库的步骤,并给出了一个具体的例子 演示如何从服务器端取得 pubs 数据库中的 authors 表的数据到本地的 DataSet 中,然后使用 DataGrid 控件绑定到 DataSet 上,最后在客户端显示。虽然这还比较简单,但这却是最常用
的技术 第三章AD0NET数据连接方法 331数据库连接字符串 一个Web应用往往包括几十上百个ASPX文件。如果在每一个文件里都是直接构造这 个数据库连接字符串,首先是觉得麻烦,其次,如果数据库发生了什么变化,比如密码变化, 或者IP变化,难道你都要改动每一个ASPX文件? 在《轻松组建网上商店》第一版里,我们通过把数据库连接字符串封装到 pplication(“ strConv)变量里面,在 global.asa中初始化这个 Application变量,从而解决了 这个难题 另外的一个解决方法就是写一个 DbOpen函数,放到独立的一个ASP文件里,然后在 其他的文件里包含这个 DeEpen函数所在的文件。 这些方法在ASP时代非常流行。在 ASPNET时代,这些方法大部分依然有效,但是这 里介绍的方法,却是利用了 ASPNET的特性。我们如果学习 ASPNET,就一定要按照 ASPNET的风格来编写代码。这样会给你带来意想不到的性能提高。 和在ASP里面类似, ASPNET也有一个 Application一级的配置文件,叫做 config. web 通过简单地配置 config. web,就可以解决数据库连接字符串问题 (config. web) contiguration> 在aspx页面里,我们可以这样获得数据库连接字符串 Dim My Connection As SQLConnection Dim Config as hash Table 把 config. web的 appsettings全部读到临时对象中 Config= Context. GetConfig("appsettings") Config临时对象实际上是一个集合 My Connection= New SQLConnection(Config("My Conn")) 关于 config. web的详细介绍,请阅读后面的章节 此处要说明的是,本书为了使各个例子相对独立,没有采用上面介绍的方法
的技术。 第三章 ADO.NET 数据连接方法 3.3.1 数据库连接字符串 一个 Web 应用往往包括几十上百个 ASPX 文件。如果在每一个文件里都是直接构造这 个数据库连接字符串,首先是觉得麻烦,其次,如果数据库发生了什么变化,比如密码变化, 或者 IP 变化,难道你都要改动每一个 ASPX 文件? 在 《 轻松 组建 网上 商店 》第 一版 里, 我们 通过 把数 据库 连接 字符 串封 装 到 Application(“strConn”)变量里面,在 global.asa 中初始化这个 Application 变量,从而解决了 这个难题。 另外的一个解决方法就是写一个 DbOpen 函数,放到独立的一个 ASP 文件里,然后在 其他的文件里包含这个 DbOpen 函数所在的文件。 这些方法在 ASP 时代非常流行。在 ASP.NET 时代,这些方法大部分依然有效,但是这 里介绍的方法,却是利用了 ASP.NET 的特性。我们如果学习 ASP.NET,就一定要按照 ASP.NET 的风格来编写代码。这样会给你带来意想不到的性能提高。 和在 ASP 里面类似,ASP.NET 也有一个 Application 一级的配置文件,叫做 config.web。 通过简单地配置 config.web,就可以解决数据库连接字符串问题: (config.web) 在 aspx 页面里,我们可以这样获得数据库连接字符串: Dim MyConnection As SQLConnection Dim Config as HashTable ‘把 config.web 的 appsettings 全部读到临时对象中 Config = Context.GetConfig("appsettings") ‘Config 临时对象实际上是一个集合。 MyConnection = New SQLConnection(Config("MyConn")) 关于 config.web 的详细介绍,请阅读后面的章节。 此处要说明的是,本书为了使各个例子相对独立,没有采用上面介绍的方法
332两种数据库连接方式 ASPNET不仅带来了 ADO NET,还带来了 SQL Managed Provider。这样在 ASPNET里,我 们就有了两种连接数据库的方式: 1 ADO. NET Managed Provider 2, SQL Managed Provider 其中,方式一可以连接到任何ODBC或者 OLEDB数据中心,而方式二可以连接到 MS SQL Server。仅仅就 MS SQL Server来讲,使用方式二在性能上要优于方式一。 下面我们来看看数据库连接的各种情况 3.3.2.1 ADO. NET Managed Provider A ODBC 我们要连接的数据库是 MS SQL Server中的pubs数据库。首先我们创建一个DSN:控制面 板>管理工具>>数据源(ODBC)>添加 ? 用户sW系统I|文件s驱动程序跟踪连接池|关于 系统数据源) 添加① PBServer Driver do Microsoft Access (* mdb) 删除 Microsoft oDBc50L5 erver D5N配置 此向导将帮助建立一个能用于连接 SQL Server的0DBC数据源 您想用什么名称来命名数据源 ∴3 名称):bs 您希望如何描述此数据源? 说明①) Ie您想连接哪一个 SQL Server? 服务器):aoa 匚完成。下一步⑩丬取消」帮助 下面的代码就创建了一个到 MS SQL Server中pubs数据库的连接 创建对象 ADOConnection Dim obj Conn as ADOConnection=New ADOConnection("DSN=pubs")
3.3.2 两种数据库连接方式 ASP.NET 不仅带来了 ADO.NET,还带来了 SQL Managed Provider。这样在 ASP.NET 里,我 们就有了两种连接数据库的方式: 1、ADO.NET Managed Provider 2、SQL Managed Provider 其中,方式一可以连接到任何 ODBC 或者 OLEDB 数据中心,而方式二可以连接到 MS SQL Server。仅仅就 MS SQL Server 来讲,使用方式二在性能上要优于方式一。 下面我们来看看数据库连接的各种情况。 3.3.2.1 ADO.NET Managed Provider 和 ODBC 我们要连接的数据库是 MS SQL Server 中的 pubs 数据库。首先我们创建一个 DSN:控制面 板>>管理工具>>数据源(ODBC)>>添加: 下面的代码就创建了一个到 MS SQL Server 中 pubs 数据库的连接: … '创建对象 ADOConnection Dim objConn as ADOConnection=New ADOConnection(“DSN=pubs”)
obj Conn. Open)·打开数据链路 注意开始的两个 Import语句。这是 ADONET对象所在的 Namespace ADO. NET Managed Provider+ODBC可以连接到各种数据源,包括: MS SQL Server、 Access Excl、 mySQL、 Oracle,甚至格式化的文本文件等等。 33211一个完整的例子 % Import Namespace ="System. Data"%> % Import Namespace ="System. Data ADO"%> Sub Page Load( By Val Sender As object, By Val e As EventArgs) On Error resume next Dim cn As ADOConnection cn= New ADOConnection("DSN=NWind") If cn. State= 1 Then IblReturn Code. Text = "The Connection State is: " cn State " Connection Succeeded" Else IblReturn ode Text "The Connection State is # cn State "cOnnection Failed End If End Sub <asp: Label id="lblReturn Code"Runat=server 3.3.2.2 ADO. NET Managed Provider A OLEDB 建立一个到 OLEDB数据中心的连接,就需要精心构造数据库连接字符串。下面的代码建立 了一个到 Access数据库的连接
objConn.Open() '打开数据链路 … 注意开始的两个 Import 语句。这是 ADO.NET 对象所在的 Namespace。 ADO.NET Managed Provider+ODBC 可以连接到各种数据源,包括:MS SQL Server、Access、 Excel、mySQL、Oracle,甚至格式化的文本文件等等。 3.3.2.1.1 一个完整的例子 Sub Page_Load(ByVal Sender As Object, ByVal e As EventArgs) On Error Resume Next Dim cn As ADOConnection cn = New ADOConnection("DSN=NWind") cn.Open() If cn.State = 1 Then lblReturnCode.Text = "The Connection State is: " & cn.State & " - Connection Succeeded" Else lblReturnCode.Text = "The Connection State is: " & cn.State & " - Connection Failed" End If End Sub 3.3.2.2 ADO.NET Managed Provider 和 OLEDB 建立一个到 OLEDB 数据中心的连接,就需要精心构造数据库连接字符串。下面的代码建立 了一个到 Access 数据库的连接: