asp.net

位置:IT落伍者 >> asp.net >> 浏览文章

Asp.Net中创建和使用Ado.net


发布日期:2023年10月06日
 
Asp.Net中创建和使用Ado.net
在商业应用程序中最重要的组件是数据无论是在线的商务应用程序公司的企业软件还是小型公司的会计应用程序无不如此通过一个通用的线程与数据打交道即都必须实现快速有效可靠的方式存储检索和处理数据

然而一直一来令人棘手的问题是这些数据文件常以不同的格式存储这就需要开发者学会用多种不同的方式来处理完全一样的事情Microsoft等诸多数据提供者力求实现数据访问格式的标准化

从Odbc的出现到DaoRdoOledbAdo的实现可以说标准化的进程逐步实现特别是Ado的出现很好的实现了通用数据访问的模式致使很多人认为每隔两年学习一种新的数据访问对象模型的年代已经过去了但是通过Internet我们发现这种想法是错误的

ADONET的设计目标

随着应用程序开发的发展演变新的应用程序已基于Web应用程序模型越来越松散地耦合如今越来越多的应用程序使用XML来编码要通过网络连接传递的数据Web应用程序将HTTP用作在层间进行通信的结构因此它们必须显式处理请求之间的状态维护这一新模型大大不同于连接紧耦合的编程风格此风格曾是客户端/服务器时代的标志在此编程风格中连接会在程序的整个生存期中保持打开而不需要对状态进行特殊处理

设计ADONET的目的是为了满足这一新编程模型的以下要求具有断开式数据结构能够与XML紧密集成具有能够组合来自多个不同数据源的数据的通用数据表示形式在创建ADONET时Microsoft具有以下设计目标

利用当前的ADO知识

ADONET的设计满足了当今应用程序开发模型的多种要求同时该编程模型尽可能地与ADO保持一致这使当今的ADO开发人员不必从头开始学习全新的数据访问技术

ADONET是NET Framework的固有部分因此对于ADO程序员决不是完全陌生的

ADONET与ADO共存虽然大多数基于NET的新应用程序将使用ADONET来编写NET程序员仍然可以通过NET COM互操作性服务来使用ADO

支持N层编程模式

ADONET为断开式n层编程环境提供了一流的支持许多新的应用程序都是为该环境编写的使用断开式数据集这一概念已成为编程模型中的焦点n层编程的ADONET解决方案就是DataSet

集成XML支持

XML和数据访问是紧密联系在一起的即XML的全部内容都是有关数据编码的而数据访问越来越多的内容都与XML有关NET Framework不仅支持Web标准它还是完全基于Web标准生成的

XML支持内置在ADONET中非常基本的级别上NET Framework和ADONET中的XML类是同一结构的一部分它们在许多不同的级别集成您不必在数据访问服务集和它们的XML相应服务之间进行选择它们的设计本来就具有从其中一个跨越到另一个的功能

ADONET的组件

设计ADONET组件的目的是为了从数据操作中分解出数据访问ADONET的两个核心组件会完成此任务DataSet和NET Framework数据提供程序后者是一组包括ConnectionCommandDataReader和DataAdapter对象在内的组件

ADONET DataSet是ADONET的断开式结构的核心组件DataSet的设计目的很明确为了实现独立于任何数据源的数据访问因此它可以用于多种不同的数据源用于XML数据或用于管理应用程序本地的数据DataSet包含一个或多个DataTable对象的集合这些对象由数据行和数据列以及主键外键约束和有关DataTable对象中数据的关系信息组成

ADONET结构的另一个核心元素是NET Framework数据提供程序其组件的设计目的相当明确为了实现数据操作和对数据的快速只进只读访问Connection对象提供与数据源的连接Command对象使您能够访问用于返回数据修改数据运行存储过程以及发送或检索参数信息的数据库命令DataReader从数据源中提供高性能的数据流最后DataAdapter提供连接DataSet对象和数据源的桥梁DataAdapter使用Command对象在数据源中执行SQL命令以便将数据加载到DataSet中并使对DataSet中数据的更改与数据源保持一致

可以为任何数据源编写NET Framework数据提供程序NET Framework提供了四个NET Framework数据提供程序SQL Server NET Framework 数据提供程序OLE DB NET Framework数据提供程序ODBC NET Framework 数据提供程序和 Oracle NET Framework 数据提供程序

使用ADONET连接到数据源

在ADONET中可以使用Connection对象来连接到指定的数据源若要连接到Microsoft SQL Server 版或更高版本请使用SQL Server NET Framework数据提供程序的SqlConnection对象若要使用用于SQL Server的OLE DB提供程序(SQLOLEDB)连接到OLE DB数据源或者连接到Microsoft SQL Server x版或较早版本请使用OLE DB NET Framework数据提供程序的OleDbConnection对象若要连接到ODBC数据源请使用ODBC NET Framework数据提供程序的OdbcConnection对象若要连接到Oracle数据源请使用Oracle NET Framework数据提供程序的OracleConnection对象

使用ADONET连接到SQL Server

SQL Server NET Framework数据提供程序使用SqlConnection对象提供与Microsoft SQL Server 版或更高版本的连接

SQL Server NET Framework数据提供程序支持类似于OLE DB (ADO)连接字符串格式的连接字符串格式有关有效的字符串格式名称和值请参见附表

以下代码示例演示如何创建和打开与SQL Server(版本 或更高版本)数据库的连接

[Visual Basic] Dim myConn As SqlConnection = New SqlConnection(Data Source=localhost;Integrated Security=SSPI;Initial Catalog=northwind) myConnOpen() [C#] SqlConnection nwindConn = new SqlConnection(Data Source=localhost; Integrated Security=SSPI; + Initial Catalog=northwind nwindConnOpen()

建议使用完Connection后始终将其关闭这可以使用Connection对象的Close或Dispose方法来实现

集成安全性和ASPNET

SQL Server集成安全性(也称为受信任的连接)是连接到SQL Server的最安全的方法因为它不在连接字符串中公开用户标识和密码建议使用该方法对连接进行身份验证

集成安全性使用正在执行的进程的当前安全标识或标记对于桌面应用程序安全标识或标记通常是当前登录的用户的标识

ASPNET应用程序的安全标识可设置为几个不同的选项之一若要更好地了解使用集成安全性连接到SQL Server时ASPNET应用程序所使用的安全标识请参见我写得中进行安全的ADONET编码系列或者参考msdn

Name

Default

Description

名称

默认值

说明

Application Name

The name of the application or Net SqlClient Data Provider if no application name is provided

应用程序名称

应用程序的名称或者Net SqlClient Data Provider(如果不提供应用程序名称)

AttachDBFilename

or

extended properties

or

Initial File Name

The name of the primary file including the full path name of an attachable database

The database name must be specified with the keyword database

AttachDBFilename

扩展属性

初始文件名

可连接数据库的主文件的名称包括完整的路径名

必须使用关键字database来指定数据库的名称

Connect Timeout

or

Connection Timeout

The length of time (in seconds) to wait for a connection to the server before terminating the attempt and generating an error

连接超时设定

连接超时

在终止尝试并产生错误之前等待与服务器的连接的时间长度(以秒为单位)

Current Language

The SQL Server Language record name

当前语言

SQL Server 语言记录名称

Data Source

or

Server

or

Address

or

Addr

or

Network Address

The name or network address of the instance of SQL Server to which to connect

数据源

服务器

地址

Addr

网络地址

要连接的 SQL Server 实例的名称或网络地址

Encrypt

false

When true SQL Server uses SSL encryption for all data sent between the client and server if the server has a certificate installed Recognized values are true false yes and no

加密

false

当该值为 true 时如果服务器端安装了证书则 SQL Server 将对所有在客户端和服务器之间传送的数据使用 SSL 加密可识别的值为 truefalseyes 和 no

Initial Catalog

or

Database

The name of the database

初始目录

数据库

数据库的名称

Integrated Security

or

Trusted_Connection

false

When false User ID and Password are specified in the connection When true the current Windows account credentials are used for authentication

Recognized values are true false yes no and sspi (strongly recommended) which is equivalent to true

集成安全性

Trusted_Connection

false

当为 false 时将在连接中指定用户 ID 和密码当为 true 时将使用当前的Windows 帐户凭据进行身份验证

可识别的值为 truefalseyesno 以及与 true 等效的 sspi(强烈推荐)

Network Library

or

Net

dbmssocn

The network library used to establish a connection to an instance of SQL Server Supported values include dbnmpntw (Named Pipes) dbmsrpcn (Multiprotocol) dbmsadsn (Apple Talk) dbmsgnet (VIA) dbmslpcn (Shared Memory) and dbmsspxn (IPX/SPX) and dbmssocn (TCP/IP)

The corresponding network DLL must be installed on the system to which you connect If you do not specify a network and you use a local server (for example or (local) shared memory is used

网络库

网络

dbmssocn

用于建立与 SQL Server 实例的连接的网络库支持的值包括 dbnmpntw(命名管道)dbmsrpcn(多协议)dbmsadsn (Apple Talk)dbmsgnet (VIA)dbmslpcn(共享内存)及 dbmsspxn (IPX/SPX) 和 dbmssocn (TCP/IP)

相应的网络 DLL 必须安装在要连接的系统上如果不指定网络而使用一个本地服务器(比如(local)则使用共享内存

Packet Size

Size in bytes of the network packets used to communicate with an instance of SQL Server

数据包大小

用来与 SQL Server 的实例进行通讯的网络数据包的大小以字节为单位

Password

or

Pwd

The password for the SQL Server account logging on (Not recommended To maintain a high level of security it is strongly recommended that you use the Integrated Security or Trusted_Connection keyword instead

密码

Pwd

SQL Server 帐户登录的密码(建议不要使用为了维护最高级别的安全性强烈建议改用 Integrated Security 或 Trusted_Connection 关键字)

Persist Security Info

false

When set to false or no (strongly recommended) securitysensitive information such as the password is not returned as part of the connection if the connection is open or has ever been in an open state Resetting the connection string resets all connection string values including the password

Recognized values are true false yes and no

持续安全信息

false

当该值设置为 false 或 no(强烈推荐)时如果连接是打开的或者一直处于打开状态那么安全敏感信息(如密码)将不会作为连接的一部分返回重置连接字符串将重置包括密码在内的所有连接字符串值可识别的值为 truefalseyes 和 no

User ID

The SQL Server login account (Not recommended To maintain a high level of security it is strongly recommended that you use the Integrated Security or Trusted_Connection keyword instead

用户 ID

SQL Server 登录帐户(建议不要使用为了维护最高级别的安全性强烈建议改用Integrated Security 或 Trusted_Connection 关键字)

Workstation ID

the local computer name

The name of the workstation connecting to SQL Server

工作站 ID

本地计算机名称

连接到 SQL Server 的工作站的名称

Name

Default

Description

名称

默认值

说明

Connection Lifetime

When a connection is returned to the pool its creation time is compared with the current time and the connection is destroyed if that time span (in seconds) exceeds the value specified by Connection Lifetime This is useful in clustered configurations to force load balancing between a running server and a server just brought online

A value of zero () causes pooled connections to have the maximum connection timeout

连接生存期

当连接被返回到池时将其创建时间与当前时间作比较如果时间长度(以秒为单位)超出了由 Connection Lifetime 指定的值该连接就会被销毁这在聚集配置中很有用(用于强制执行运行中的服务器和刚置于联机状态的服务器之间的负载平衡)

零 () 值将使池连接具有最大的连接超时

Connection Reset

true

Determines whether the database connection is reset when being drawn from the pool For Microsoft SQL Server version setting to false avoids making an additional server round trip when obtaining a connection but you must be aware that the connection state such as database context is not being reset

连接重置

true

确定从池中提取数据库连接时是否重置数据库连接对于 Microsoft SQL Server 设置为 false 可避免获取连接时再有一次额外的服务器往返行程但须注意此时并未重置连接状态(如数据库上下文)

Enlist

true

When true the pooler automatically enlists the connection in the creation threads current transaction context Recognized values are true false yes and no

登记

true

当该值为 true 时池程序在创建线程的当前事务上下文中自动登记连接可识别的值为truefalseyes 和 no

Max Pool Size

The maximum number of connections allowed in the pool

最大池大小

池中允许的最大连接数

Min Pool Size

The minimum number of connections allowed in the pool

最小池大小

池中允许的最小连接数

Pooling

true

When true the SQLConnection object is drawn from the appropriate pool or if necessary is created and added to the appropriate pool Recognized values are true false yes and no

true

当该值为 true 时系统将从相应池中提取 SQLConnection 对象或在必要时创建该对象并将其添加到相应池中可识别的值为 truefalseyes 和 no

               

上一篇:详解ASP.NET 状态管理方式优缺点

下一篇:让UserControl 成为Asp.Net ajax 控件