版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、2021-12-31ASP.NET 数据库应用程序开发1ASP.NET ASP.NET 数据库应用程序开发数据库应用程序开发主主 编:陈志泊编:陈志泊2021-12-31ASP.NET 数据库应用程序开发2第第4 4章章 ADO.NETADO.NET组件及对象模型组件及对象模型4.1 ADO.NET4.1 ADO.NET概述概述4.2 ADO.NET4.2 ADO.NET对象模型对象模型4.3 4.3 数据访问途径数据访问途径2021-12-31ASP.NET 数据库应用程序开发34.1 ADO.NET4.1 ADO.NET概述概述4.1.1 ADO.NET4.1.1 ADO.NET与与ADO
2、ADO区别区别 ADO.NETADO.NET是一组是一组.NET.NET类,它使用通用语言运行时类,它使用通用语言运行时(Common language Runtime)(Common language Runtime),具有,具有.NET.NET框架的所有特框架的所有特性。性。ADO.NETADO.NET区别于区别于ADOADO,它不是,它不是ActiveXActiveX组件的集合,而组件的集合,而是采用了全新的数据访问方法,把数据访问的任务与数是采用了全新的数据访问方法,把数据访问的任务与数据查看和数据操纵分离开来。据查看和数据操纵分离开来。下面列出下面列出ADO.NETADO.NET与与
3、ADOADO的几个主要不同点:的几个主要不同点:(1 1)ADOADO使用使用RecordsetRecordset对象在内存中存储选择的数据集,对象在内存中存储选择的数据集,而而ADO.NETADO.NET使用使用DataSetDataSet对象。对象。RecordsetRecordset对象可以比对象可以比作是单个表,而作是单个表,而DataSetDataSet对象像是包含一个或多个表对象像是包含一个或多个表的数据库。的数据库。2021-12-31ASP.NET 数据库应用程序开发4(2 2)ADO.NETADO.NET使用了脱机(使用了脱机(disconnecteddisconnected
4、)数据缓存,)数据缓存,可同时在保持数据库连接和断开连接的条件下工作。可同时在保持数据库连接和断开连接的条件下工作。像像ADOADO中那样保持打开连接进行数据访问的代价是很中那样保持打开连接进行数据访问的代价是很大的,因为服务器必须持续维护每个连接。大的,因为服务器必须持续维护每个连接。(3 3)XMLXML对对ADOADO的支持非常有限,而的支持非常有限,而ADO.NETADO.NET的设计中包的设计中包含了被广泛接受的含了被广泛接受的XMLXML标准,几乎所有涉及数据格式标准,几乎所有涉及数据格式化的任务都用到了化的任务都用到了XMLXML。用户可以使用。用户可以使用XMLXML进行进行W
5、ebWeb信信息共享及异构应用数据的交换,息共享及异构应用数据的交换,ADO.NETADO.NET与与XMLXML的完全的完全兼容使得它能够与其他兼容兼容使得它能够与其他兼容XMLXML的平台进行互操作。的平台进行互操作。2021-12-31ASP.NET 数据库应用程序开发5ADO.NETADO.NET为使数据存取更为简单和效率而作出的两个最重要的改进:为使数据存取更为简单和效率而作出的两个最重要的改进:1 1离线数据集(离线数据集(Disconnected DataSetDisconnected DataSet) ADOADO的运作是一种在线方式,这意味着不论是浏览或更新数据都的运作是一种
6、在线方式,这意味着不论是浏览或更新数据都必须是实时的。必须是实时的。ADO.NETADO.NET则使用离线方式,在访问数据的时候,则使用离线方式,在访问数据的时候,ADO.NETADO.NET会利用会利用XMLXML制作数据的一份副本(快照副本制作数据的一份副本(快照副本snapshotsnapshot),),ADO.NETADO.NET的数据库连接也只有在这段时间需要在线。的数据库连接也只有在这段时间需要在线。2 2对对XMLXML的原生支持(的原生支持(XML Native SupportXML Native Support) 由于由于ADOADO使用使用COMCOM技术,这就要求所使用的
7、数据类型必须符合技术,这就要求所使用的数据类型必须符合COMCOM规范,而规范,而ADO.NETADO.NET基于基于XMLXML格式,其数据类型更加丰富,并且不格式,其数据类型更加丰富,并且不需要需要COMCOM编排而导致的数据类型转换,从而提高了整体性能编排而导致的数据类型转换,从而提高了整体性能(DataSetDataSet的原生结构就是的原生结构就是XMLXML)。)。2021-12-31ASP.NET 数据库应用程序开发64.1.2 .NET4.1.2 .NET框架中的数据提供者框架中的数据提供者 ADO.NET ADO.NET有两个核心组件:有两个核心组件:DataSetDataS
8、et和和.NET.NET数据数据提供者即提供者即.NET Data Provider.NET Data Provider,包括,包括ConnectionConnection、CommandCommand、DataReaderDataReader、DataAdapter 4DataAdapter 4个核心对)。个核心对)。ADO.NETADO.NET的整个体系结构如图的整个体系结构如图4.14.1所示。所示。 2021-12-31ASP.NET 数据库应用程序开发7 ADO.NET 1.0 ADO.NET 1.0提供了两种默认数据提供者:提供了两种默认数据提供者:SQL SQL Server .
9、NET Data ProviderServer .NET Data Provider和和OLE DB .NET Data OLE DB .NET Data ProviderProvider,它们随,它们随.NET Framework 1.0.NET Framework 1.0一同发行,这两一同发行,这两种数据提供者可访问的数据源如图种数据提供者可访问的数据源如图4.24.2所示,具体说明请所示,具体说明请参照表参照表4.14.1所示。所示。 图图4.2 ADO.NET4.2 ADO.NET体系结构图体系结构图 2021-12-31ASP.NET 数据库应用程序开发8 数据提供者所属命名空间说明
10、SQL Server .NETData ProviderSystem.Data.SqlClient专用于访问Mircosoft SQL Server7.0或更高版本的SQL Server数据库OLE DB .NETData ProviderSystem.Data.OleDb是通用的数据库访问方法,可用于访问Access、SQL Server、dBase、Excel、Oracle等格式的数据库,但当数据源是以下情况时,建议使用该提供者:Mircosoft SQL Server 6.x或更早版本的中间层应用程序Microsoft Access数据库或者其他支持适应OLE DB接口的OLE DB数据
11、提供者的单层应用程序表表4.1 .NET Framework4.1 .NET Framework框架的两种默认数据提供者框架的两种默认数据提供者2021-12-31ASP.NET 数据库应用程序开发9数据提供者.NET数据提供者命名空间说明ODBC 的 .NET Framework 数据提供者System.Data.Odbc开放式数据库连接(ODBC)的.NET数据提供者,用来建立与ODBC数据源之间的连接(通常是一些不具备OLE DB提供者的旧数据源)。Oracle 的 .NET Framework 数据提供者System.Data.OracleClient该提供者所提供的服务与SqlCli
12、ent命名空间中的类所提供的服务类似,它可以直接建立与Oracle数据库的连接。表表4.2 4.2 其他其他.NET.NET数据提供者数据提供者 2021-12-31ASP.NET 数据库应用程序开发10 虽然虽然SQL Server SQL Server 数据提供者和数据提供者和OLE DBOLE DB数据提供者都数据提供者都可以访问可以访问SQL Server 7.0SQL Server 7.0或更高版本的或更高版本的SQL ServerSQL Server数据数据库,但建议使用库,但建议使用SQL ServerSQL Server数据提供者,因为在使用数据提供者,因为在使用SQL SQL
13、 Server Server 数据提供者访问时,微软公司进行了效率的调数据提供者访问时,微软公司进行了效率的调整,要比使用整,要比使用OLE DBOLE DB提供者访问时效率更高效。当通过提供者访问时效率更高效。当通过OLE DB OLE DB 访问时,在到达数据源之前,必须与访问时,在到达数据源之前,必须与OLE DBOLE DB服务服务组件和组件和OLE DBOLE DB提供者两个抽象层进行交互,因此运行速提供者两个抽象层进行交互,因此运行速度与度与SQL ServerSQL Server数据提供者相比会稍慢一些。数据提供者相比会稍慢一些。2021-12-31ASP.NET 数据库应用程序
14、开发11 尽管不同数据提供者之间有略微差别,但包含在不同尽管不同数据提供者之间有略微差别,但包含在不同命名空间中的每个类的用法上都非常相似,名称上通过命名空间中的每个类的用法上都非常相似,名称上通过不同的前缀来进行区别,如,对于不同的前缀来进行区别,如,对于SQL ServerSQL Server数据提供数据提供者,其实现数据库连接的类名是者,其实现数据库连接的类名是SqlConncetionSqlConncetion,属于,属于System.Data.SqlClientSystem.Data.SqlClient命名空间,而对于命名空间,而对于OLE DBOLE DB数据提数据提供者,其实现数
15、据连接的类名是供者,其实现数据连接的类名是OleDbConnectionOleDbConnection,在命,在命名空间名空间System.Data.OleDbSystem.Data.OleDb中定义。因此,用户只要更改中定义。因此,用户只要更改少量的代码,就可以很容易地将一个提供者更改为另一少量的代码,就可以很容易地将一个提供者更改为另一个提供者。个提供者。2021-12-31ASP.NET 数据库应用程序开发12类名功能说明SqlConnection 代表与SQL Server数据源的连接SqlCommand对SQL Server数据源执行Transact-SQL语句或者存储过程SqlDa
16、taAdapter用SQL Server数据源填充DataSet并解析更新SqlDataReader从SQL Server数据源中读取只向前的、只读的数据流SqlError有关SQL Server 返回的警告或错误信息SqlException当SQL Server返回警告或错误时引发的异常SqlParameter表示命令或存储过程的输入、输出或返回值参数SqlTransaction表示对SQL Server数据源执行的Transact-SQL事务表表4.3 System.Data.SqlClient4.3 System.Data.SqlClient命名空间中的部分类命名空间中的部分类 2021
17、-12-31ASP.NET 数据库应用程序开发134.2 ADO.NET4.2 ADO.NET对象模型对象模型4.2.1 ADO.NET4.2.1 ADO.NET对象模型概述对象模型概述 ADO.NETADO.NET对象模型中有五个主要的对象,分别是对象模型中有五个主要的对象,分别是ConnectionConnection对象、对象、CommandCommand对象、对象、DataAdapterDataAdapter对象以及对象以及DataReaderDataReader对象组成。对象组成。ConnectionConnection对象用来连接数据对象用来连接数据库,库,CommandComma
18、nd对象用来执行对象用来执行SQLSQL语句,语句,DataReaderDataReader对象用对象用于读取数据库,于读取数据库,DataAdapterDataAdapter对象用于执行对象用于执行SQLSQL语句同时语句同时打开数据表格(打开数据表格(DataTableDataTable),),DataSetDataSet对象用于存取数对象用于存取数据库。这五个对象之间的关系如图据库。这五个对象之间的关系如图4.34.3所示。所示。2021-12-31ASP.NET 数据库应用程序开发14图图4.3 ADO.NET4.3 ADO.NET对象模型对象模型 2021-12-31ASP.NET
19、数据库应用程序开发15 对于对于.NET.NET的两种数据提供者:的两种数据提供者:SQL Server .NETSQL Server .NET提供提供者和者和OLE DB .NETOLE DB .NET提供者,每组数据提供者内都有提供者,每组数据提供者内都有ConnectionConnection对象、对象、CommandCommand对象、对象、DataAdapterDataAdapter对象及对象及DataReaderDataReader对象。对于不同的数据提供者,对应上述四对象。对于不同的数据提供者,对应上述四种对象的类的真正名称是不同的,如表种对象的类的真正名称是不同的,如表4.44
20、.4所示。所示。类名OLE DB数据操作类名SQL Server数据操作类名Connection对象OleDbConnectionSqlConnectionCommand对象OleDbCommandSqlCommandDataAdapter对象OleDbDataAdapterSqlDataAdapterDataReader对象OleDbDataReaderSqlDataReader表表4.4 OLE DB4.4 OLE DB和和SQL ServerSQL Server两组数据操作类两组数据操作类 2021-12-31ASP.NET 数据库应用程序开发16 虽然这两组数据操作类针对的数据源不一样
21、,但是虽然这两组数据操作类针对的数据源不一样,但是它们的架构都是一样的。例如对于它们的架构都是一样的。例如对于OleDbConnectionOleDbConnection和和SqlConnectionSqlConnection,虽然一个是针对,虽然一个是针对OLE DBOLE DB数据源,而另一数据源,而另一个是针对个是针对SQL ServerSQL Server数据源,但是这它们都拥有一样的数据源,但是这它们都拥有一样的属性、方法及事件,所以使用起来并不会造成困扰。只属性、方法及事件,所以使用起来并不会造成困扰。只要针对所要建立的数据源种类来选择要针对所要建立的数据源种类来选择OLE DBO
22、LE DB数据操作对数据操作对象或是象或是SQLSQL数据操作对象就可以了。数据操作对象就可以了。 2021-12-31ASP.NET 数据库应用程序开发174.2.2 4.2.2 相关命名空间的引用相关命名空间的引用1 System.Data1 System.Data命名空间命名空间 在程序中,要使用在程序中,要使用ADO.NETADO.NET对象模型中的类时,必须对象模型中的类时,必须首先引用首先引用System.DataSystem.Data这个命名空间。因为这个命名空间。因为System.DataSystem.Data这个命名空间中包括大部分组成这个命名空间中包括大部分组成ADO.NE
23、TADO.NET架构的基础对象架构的基础对象类别,例如类别,例如DataSetDataSet对象、对象、DataTableDataTable对象、对象、DataColumnDataColumn对象、对象、DataRelationDataRelation对象等,所以要使用对象等,所以要使用ADO.NETADO.NET,在程,在程序中就一定引用序中就一定引用System.DataSystem.Data这个命名空间。这个命名空间。2021-12-31ASP.NET 数据库应用程序开发182 System.Data.OleDb2 System.Data.OleDb命名空间命名空间 当要使用当要使用OL
24、E DBOLE DB数据提供者来存取数据时,必须引用数据提供者来存取数据时,必须引用System.Data.OleDbSystem.Data.OleDb这个命名空间。这个命名空间。System.Data.OleDbSystem.Data.OleDb这个命名空间定义了这个命名空间定义了OLE DBOLE DB数据操作组件的对象类别,数据操作组件的对象类别,例如例如OleDbConnectionOleDbConnection类、类、OleDbCommandOleDbCommand类、类、OleDbDataAdapterOleDbDataAdapter类及类及OleDbDataReaderOleDb
25、DataReader类。类。2021-12-31ASP.NET 数据库应用程序开发193 System.Data.SqlClient3 System.Data.SqlClient命名空间命名空间 当要使用当要使用SQL ServerSQL Server数据提供者存取数据时,必须引数据提供者存取数据时,必须引用用System.Data.SqlClientSystem.Data.SqlClient这个命名空间。这个命名空间。System.Data.SqlClientSystem.Data.SqlClient这个命名空间定义了这个命名空间定义了SQLSQL数数据操作组件的对象类别,例如据操作组件的对
26、象类别,例如SqlConnectionSqlConnection类、类、SqlCommandSqlCommand类、类、SqlDataAdapterSqlDataAdapter类及类及SqlDataReaderSqlDataReader类。类。 表表4.54.5简要列举了简要列举了.Net.Net框架中与框架中与ADO.NETADO.NET相关的几个命相关的几个命名空间。名空间。2021-12-31ASP.NET 数据库应用程序开发20命名空间说明System.Data包含了组成ADO.NET体系结构的一些基本类System.Data.OleDb包含了运用OleDb类型的数据提供者对象的类Sy
27、stem.Data.SqlClient包含了运用SQL Server类型的数据提供者对象的类System.Data.Odbc是用于ODBC的.NET Framework数据提供者System.Data.OracleClient是用于Oracle的.NET Framework数据提供者System.Data.SqlTypes包含了代表SQL Server中的数据类型的类System.Data.Common包含了被所有的数据提供者对象所共享的类System.Xml包含一系列用来处理XML文档和文档片段的类表表4.5 ADO.NET4.5 ADO.NET相关的命名空间相关的命名空间2021-12-3
28、1ASP.NET 数据库应用程序开发214.2.3 Connection4.2.3 Connection对象及使用对象及使用1 Connection1 Connection对象的常用方法对象的常用方法(1 1)Open()Open():利用:利用ConnectionStringConnectionString所指定的属性设置所指定的属性设置 打开一个数据库连接。打开一个数据库连接。(2 2)Close()Close():关闭与数据库的连接。:关闭与数据库的连接。(3 3)Clone()Clone():克隆一个连接。:克隆一个连接。(4 4)CreateCommand()CreateComman
29、d():创建并返回一个与创建并返回一个与SqlConnectionSqlConnection相关的相关的SqlCommandSqlCommand对象。对象。2021-12-31ASP.NET 数据库应用程序开发222 Connection2 Connection对象的常用属性对象的常用属性(1 1)ConnectionStringConnectionString:获取或者设置用于打开数据库:获取或者设置用于打开数据库 的连接字符串。的连接字符串。(2 2)ConnectionTimeoutConnectionTimeout:在试图建立连接的过程中,:在试图建立连接的过程中,获取在终止操作并产生
30、错误之前等待的时间,也就是获取在终止操作并产生错误之前等待的时间,也就是超时时间。超时时间。(3 3)DataBaseDataBase:取得或设置在数据库服务器上要打开的:取得或设置在数据库服务器上要打开的数据库名。数据库名。(4 4)DataSourceDataSource:取得或设置:取得或设置DSNDSN。(5 5)PasswordPassword:取得或设置密码。:取得或设置密码。(6 6)UserIDUserID:取得或设置登录名。:取得或设置登录名。(7 7)StateState:取得目前连接的状态。:取得目前连接的状态。2021-12-31ASP.NET 数据库应用程序开发233
31、 Connection3 Connection对象的构造函数与对象的创建对象的构造函数与对象的创建 ConnectionConnection对象的创建是由其对应的构造函数构造对象的创建是由其对应的构造函数构造完成的,但是,不同的数据提供者用不同的类及其构造完成的,但是,不同的数据提供者用不同的类及其构造函数完成函数完成ConnectionConnection对象的创建,在对象的创建,在SQL ServerSQL Server数据提数据提供者中用类供者中用类SqlConnectionSqlConnection的构造函数创建的构造函数创建ConnectionConnection对对象,而在象,而在
32、OLE DBOLE DB数据提供者中用类数据提供者中用类OleDbConnectionOleDbConnection的构的构造函数创建造函数创建ConnectionConnection对象。对象。 在表在表4.64.6中分别列出中分别列出SQL ServerSQL Server数据提供者中类数据提供者中类SqlConnectionSqlConnection的两个构造函数的原型及其功能。的两个构造函数的原型及其功能。2021-12-31ASP.NET 数据库应用程序开发24构造函数原型功能SqlConnection()创建一个SqlConnection对象,并将该对象的ConnectionStr
33、ing、Database、DataSource属性的值都初始化为空字符串,ConnectionTimeout属性的值初始化为15秒SqlConnection(string connectionString);利用参数connectionString所指定的连接字符串创建一个SqlConnection对象,并将该对象的ConnectionString属性的值初始化为参数connectionString所表示的连接字符串,其它参数的初始值同前表表4.6 SqlConnection4.6 SqlConnection类的两个构造函数及对应的功能类的两个构造函数及对应的功能2021-12-31ASP.N
34、ET 数据库应用程序开发25在表在表4.74.7中分别列出类中分别列出类OleDbConnectionOleDbConnection的两个构造函数的两个构造函数的原型及其功能。的原型及其功能。构造函数原型功能OleDbConnection()创建一个OleDbConnection对象,并将该对象的ConnectionString、Database、DataSource属性的值都初始化为空字符串,ConnectionTimeout属性的值初始化为15秒OleDbConnection(string connectionString)利用参数connectionString所指定的连接字符串创建一个
35、OleDbConnection对象,并将该对象的ConnectionString属性的值初始化为参数connectionString所表示的连接字符串,其它参数的初始值同前表表4.7 OleDbConnection4.7 OleDbConnection类的两个构造函数及对应的功能类的两个构造函数及对应的功能2021-12-31ASP.NET 数据库应用程序开发26表表4.84.8中,以中,以SQL ServerSQL Server数据提供者为例来说明创建数据提供者为例来说明创建ConnectionConnection对象的方法。对象的方法。第种首先,利用SqlConnection类的构造函数S
36、qlConnection()创建一个未初始化的SqlConnection对象,再用一个连接字符串初始化该对象:SqlConnection conn=new SqlConnection(); /需要注意的是在使用conn之前必须再设置ConnectionString属性的值conn.ConnectionString=server=localhost;database=pubs;uid=sa;pwd=;第种利用SqlConnection类的构造函数SqlConnection(string connectionString)创建一个SqlConnection对象,并为该构造函数的参数指定一个连接字符
37、串。SqlConnection conn=new SqlConnection(server=localhost;database=pubs;uid=sa;pwd=;);表表4.8 4.8 创建创建ConnectionConnection对象的两种方法对象的两种方法2021-12-31ASP.NET 数据库应用程序开发274 4 连接字符串连接字符串 连接字符串是由连接字符串是由“;”;”分隔的若干个参数及其对应的值所分隔的若干个参数及其对应的值所组成,参数名和对应的值间用组成,参数名和对应的值间用“=”=”连接。下面通过相应的实例来说连接。下面通过相应的实例来说明如何指定连接字符串的内容。明如
38、何指定连接字符串的内容。(1 1)连接到)连接到SQL ServerSQL Server数据库的连接字符串数据库的连接字符串using System.Data;using System.Data;using System.Data.SqlClient;using System.Data.SqlClient; SqlConnection conn=new SqlConnection();SqlConnection conn=new SqlConnection();conn.ConnectionString=conn.ConnectionString=Server=(local);Database
39、=Northwind;Uid=sa;Pwd=;Server=(local);Database=Northwind;Uid=sa;Pwd=;Connection Timeout=5;Connection Timeout=5;2021-12-31ASP.NET 数据库应用程序开发28 首先,连接首先,连接SQL ServerSQL Server数据库引用的命名空间是数据库引用的命名空间是System.Data.SqlClientSystem.Data.SqlClient,建立连接对象用的构造函数为,建立连接对象用的构造函数为SqlConnection()SqlConnection()。 然后对已建
40、立的连接对象指定其然后对已建立的连接对象指定其ConnectionStringConnectionString属属性的值,即指定连接字符串。在该连接字符串中,需要指定若干个性的值,即指定连接字符串。在该连接字符串中,需要指定若干个属性的值,现分别说明如下:属性的值,现分别说明如下: Provider Provider参数:参数:标识所要连接数据源的种类。读者可能注意到,在上面所举的标识所要连接数据源的种类。读者可能注意到,在上面所举的例子中,连接字串中没有指定例子中,连接字串中没有指定ProviderProvider参数,这是因为在本例中使参数,这是因为在本例中使用的是用的是SQL Serve
41、r Data ProviderSQL Server Data Provider,如果通过,如果通过OleDB Data ProviderOleDB Data Provider连接数据库,就必须指定正确的连接数据库,就必须指定正确的ProviderProvider参数,表参数,表4.94.9中指明了要连中指明了要连接的数据源及接的数据源及ProviderProvider参数值的对应关系。参数值的对应关系。2021-12-31ASP.NET 数据库应用程序开发29Provider参数值连接的数据源SQLOLEDBMicrosoft OLEDB Provider for SQL ServerMSDA
42、SQLMicrosoft OLEDB Provider for ODBCMSDAORAMicrosoft OLEDB Provider for OracleMicrosoft.Jet.OLEDB.4.0Microsoft Jet 引擎4.0,OLEDB Provider for AccessMSIDXSMicrosoft Index ServerADSDSOObjectMicrosoft Active Directory Services表表4.9 Provider4.9 Provider参数支持的数据源参数支持的数据源 2021-12-31ASP.NET 数据库应用程序开发30 Server
43、 Server参数参数( (也可以写成也可以写成Data SourceData Source、AddressAddress、Addr)Addr): 指定数据库服务器中所要连接的指定数据库服务器中所要连接的SQL ServerSQL Server实例和实例和它所在的机器。它所在的机器。Server=(local)Server=(local),指明执行,指明执行ADO.NETADO.NET代码代码的主机和数据库的主机是同一台机器,即使用的是本地的主机和数据库的主机是同一台机器,即使用的是本地数据库,并隐式地标识了默认的数据库,并隐式地标识了默认的SQL ServerSQL Server实例。实例。
44、Server=(local)Server=(local)也可以写成也可以写成erver=localhosterver=localhost。如果。如果使用的是本地数据库且定义了实例名,则可以写为使用的是本地数据库且定义了实例名,则可以写为Server=(local)Server=(local)实例名;如果是远程服务器,则将实例名;如果是远程服务器,则将ServerServer参数值替换为远程服务器的名称或参数值替换为远程服务器的名称或IPIP地址,如地址,如Server=HuangServer=Huang或或Server=9Server=9。2
45、021-12-31ASP.NET 数据库应用程序开发31 Database Database参数参数( (也可以写成也可以写成Initial Catalog)Initial Catalog): 指定数据库服务器中所要连接的数据库名称。如,指定数据库服务器中所要连接的数据库名称。如,Database= NorthwindDatabase= Northwind可以写成可以写成Initial Catalog= Initial Catalog= NorthwindNorthwind,指明使用的数据源为,指明使用的数据源为NorthwindNorthwind数据库。数据库。 Uid Uid参数参数( (
46、也可以写成也可以写成User ID)User ID): 指定登录数据源的使用者帐号。指定登录数据源的使用者帐号。Uid=saUid=sa可以写成可以写成User User ID=saID=sa,即将连接数据库的验证用户名指定为,即将连接数据库的验证用户名指定为sasa。 Pwd Pwd参数参数( (也可以写成也可以写成Password)Password): 指定登录数据源的使用者密码。指定登录数据源的使用者密码。“Pwd=”Pwd=”标识数据标识数据库连接的验证密码为空,其等价于库连接的验证密码为空,其等价于“Password=”Password=”。出于。出于安全考虑,建议密码不要为空。安全
47、考虑,建议密码不要为空。 2021-12-31ASP.NET 数据库应用程序开发32 Connect Timeout Connect Timeout参数:参数: 确定打开数据库将要等待的最长时间,以秒为单确定打开数据库将要等待的最长时间,以秒为单位,默认值为位,默认值为1515秒。秒。Connect Timeout=5Connect Timeout=5表明数据库连接表明数据库连接超时时间为超时时间为5 5秒。秒。 另外,还有其他一些比较常用的连接字符串参数,另外,还有其他一些比较常用的连接字符串参数,Integrated SecurityIntegrated Security(亦称为(亦称为T
48、rusted_ConnectionTrusted_Connection)决)决定是否启用定是否启用SQL ServerSQL Server集成安全验证集成安全验证( (亦称可信任连亦称可信任连接接) ),默认为,默认为FalseFalse(等效于(等效于No)No),表明使用连接字符串中,表明使用连接字符串中的用户名和密码对用户进行验证。如果值为的用户名和密码对用户进行验证。如果值为TrueTrue(等效(等效于于SSPISSPI或或YesYes),表示),表示SQL ServerSQL Server使用使用WindowsWindows验证模验证模式。式。 2021-12-31ASP.NET
49、数据库应用程序开发33如果如果SQL ServerSQL Server设置为设置为WindowsWindows验证模式,那么就不需要使用验证模式,那么就不需要使用UidUid和和PwdPwd这样的方式来登录,而需要使用这样的方式来登录,而需要使用Integrated Integrated Security=SSPISecurity=SSPI来进行登录。这样连接字符串可以修改为:来进行登录。这样连接字符串可以修改为:SqlConnection conn=new SqlConnection();SqlConnection conn=new SqlConnection();conn.Connecti
50、onString=Server=(local);DataBase=Northwind;Inconn.ConnectionString=Server=(local);DataBase=Northwind;Integrated Security=SSPI;tegrated Security=SSPI; 采用采用SQL ServerSQL Server集成安全是连接到集成安全是连接到SQL ServerSQL Server数据库更可靠的数据库更可靠的方法,因为它不会在连接字符串中暴露用户名和密码。方法,因为它不会在连接字符串中暴露用户名和密码。 PoolingPooling参数确定是否启用连接池,默
51、认值为参数确定是否启用连接池,默认值为TrueTrue。Min Pool Min Pool SizeSize和和Max Pool SizeMax Pool Size设定了连接池的大小,默认值分别为设定了连接池的大小,默认值分别为0 0和和100100。若将最小池设置为大于若将最小池设置为大于0 0的某个值,会使连接池预先加载指定数目的的某个值,会使连接池预先加载指定数目的连接,并帮助负载较重的应用程序快速启动。连接,并帮助负载较重的应用程序快速启动。2021-12-31ASP.NET 数据库应用程序开发34(2 2)连接到)连接到Access 2000Access 2000数据库的连接字符串数
52、据库的连接字符串连接连接AccessAccess数据库机制与连接数据库机制与连接SQL ServerSQL Server的机制没有什么太大的区的机制没有什么太大的区别,只是要使用别,只是要使用Ole DBOle DB数据提供者中的数据提供者中的OleDbConnectionOleDbConnection类来定义类来定义ConnectionConnection对象,且需要对连接字符串中的不同参数指定不同的值即对象,且需要对连接字符串中的不同参数指定不同的值即可,如:可,如:using System.Data;using System.Data;using System.Data.OleDb;us
53、ing System.Data.OleDb;OleDbConnection conn=new OleDbConnectionOleDbConnection conn=new OleDbConnection(Provider=Microsoft.Jet.OleDB.4.0;DataSource=C:Pubs.mdb;);(Provider=Microsoft.Jet.OleDB.4.0;DataSource=C:Pubs.mdb;); 连接连接AccessAccess数据库需要引用命名空间数据库需要引用命名空间System.Data.OleDbSystem.Data.OleDb,而不是,而不是引
54、用连接引用连接SQL ServerSQL Server的命名空间的命名空间System.Data.SqlClientSystem.Data.SqlClient;另外,应使;另外,应使用用OleDbConnectionOleDbConnection类定义连接对象,而不能使用类定义连接对象,而不能使用SqlConnectionSqlConnection类定类定义。义。 2021-12-31ASP.NET 数据库应用程序开发35 Data Source=C:pubs.mdb Data Source=C:pubs.mdb指明数据源的位置,连接字符串中使指明数据源的位置,连接字符串中使用的用的“”符号表
55、示文字字符串常量,防止将后面的路径字符串中的符号表示文字字符串常量,防止将后面的路径字符串中的“”解析为转义字符。如果要连接的数据库文件和当前应用程序文解析为转义字符。如果要连接的数据库文件和当前应用程序文件在同一个目录下,还可以使用如下的方法连接件在同一个目录下,还可以使用如下的方法连接: :OleDbConnection conn=new OleDbConnectionOleDbConnection conn=new OleDbConnection(Provider=Microsoft.Jet.OleDB.4.0;Data (Provider=Microsoft.Jet.OleDB.4.0
56、;Data Source=+MapPath(Pubs.mdb)+;);Source=+MapPath(Pubs.mdb)+;); 如果想使用如果想使用OLE DBOLE DB数据提供者建立与数据提供者建立与SQL ServerSQL Server数据库的连数据库的连接,则应使用接,则应使用OleDbConnectionOleDbConnection类定义类定义ConnctionConnction对象,并在连接字对象,并在连接字符串中,将符串中,将ProviderProvider参数的值设定为参数的值设定为“sqloledb”sqloledb”,如下代码所,如下代码所示:示:OleDbConne
57、ction conn=new OleDbConnectionOleDbConnection conn=new OleDbConnection(Provider=sqloledb;Server=(local);Database=Northwind;Uid=s(Provider=sqloledb;Server=(local);Database=Northwind;Uid=sa;Pwd=;);a;Pwd=;);2021-12-31ASP.NET 数据库应用程序开发36需要注意的三点:需要注意的三点:连接字符串中各参数的出现次序不受限制。连接字符串中各参数的出现次序不受限制。连接字符串中参数的大小写不
58、受限制。连接字符串中参数的大小写不受限制。每个参数的后面用分号每个参数的后面用分号“;”;”分隔,最后一个参数的末分隔,最后一个参数的末尾可以用也可以不用尾可以用也可以不用“;”;”,建议使用。,建议使用。 在连接字符串被赋值时,在连接字符串被赋值时,SqlConnectionSqlConnection或或OleDbConnectionOleDbConnection验证它的格式,如果连接字符串的参数验证它的格式,如果连接字符串的参数错误,会引发异常,如将错误,会引发异常,如将“Server”Server”写成写成“Ser”Ser”。而连。而连接字符串的参数值直到打开连接时才会被验证,所以如接字
59、符串的参数值直到打开连接时才会被验证,所以如果服务器名、数据库名等参数值无效,在连接字符串赋果服务器名、数据库名等参数值无效,在连接字符串赋值时就不会引发异常。值时就不会引发异常。2021-12-31ASP.NET 数据库应用程序开发375 Connection5 Connection对象的打开和关闭对象的打开和关闭 创建一个创建一个ConnectionConnection对象并指定一个连接字符串并没对象并指定一个连接字符串并没有打开一个指向数据库的物理连接,需要调用对象的有打开一个指向数据库的物理连接,需要调用对象的OpenOpen方法来打开连接。用方法来打开连接。用OpenOpen方法打开
60、的连接。方法打开的连接。 而用而用CloseClose方法来关闭方法来关闭ConnectionConnection对象,不关闭打开对象,不关闭打开的连接会影响系统性能和对应用程序的操作,所以最好的连接会影响系统性能和对应用程序的操作,所以最好关闭连接。关闭连接。SqlConnectionSqlConnection和和OleDbConnectionOleDbConnection类都提供类都提供OpenOpen和和CloseClose方法。方法。 2021-12-31ASP.NET 数据库应用程序开发38SqlConnection conn=new SqlConnectionSqlConnecti
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 酒店消防安全隐患排查整治方案
- 远程机器人行业定制化实施部署方案
- 施工机械操作安全规程方案
- 施工期间土壤侵蚀控制方案
- 机电设备接地系统功能调试方案
- 2026辽宁大连理工大学化工学院功能染料团队招聘派遣制人员1人备考题库附答案详解(培优a卷)
- 2026年福建厦门市事业单位招聘报名考试备考题库附答案详解(达标题)
- 基坑支护施工安全检查方案
- 中联物产有限公司2026届春季校园招聘备考题库附答案详解(综合题)
- 创维集团2026届春季校园招聘备考题库及答案详解(有一套)
- 广东省化工(危险化学品)企业安全隐患排查指导手册(危险化学品仓库企业专篇)
- 2025年医疗卫生系统招聘考试《医学基础知识》真题及详解
- 卫生院防雷安全生产制度
- 大型超市卫生组织制度
- 绍兴2025年浙江绍兴市政务服务办公室招聘政务服务专员6人笔试历年参考题库附带答案详解
- 国企清明活动方案策划(3篇)
- 齐成控股集团招聘笔试题库2026
- 舞台搭建施工方案及流程方案
- 2025-2030人物像摄影行业市场用户需求变化与发展趋势评估
- 2026上海人保财险校园招聘笔试备考试题及答案解析
- 测试工程师岗位面试题及笔试题全集含答案
评论
0/150
提交评论