ASP.NET 使您可以灵活地连接至数据库。一种简单的方法是使用数据源控件,通过这些控件可以将数据访问封装到可以使用连接和查询信息配置的控件中。或者,可以使用 ADO.NET 类自己编写执行数据访问的代码。
使用 ASP.NET 网页中的数据源控件
若要使用数据源控件连接至数据库,请执行以下操作:
确定所需的数据源控件的类型。例如,ObjectDataSource 控件使用中间层业务对象检索和修改数据,而 SqlDataSource 控件允许您提供数据源和 SQL 语句的连接,从而检索和修改数据。
使用 SqlDataSource 控件时,请确定所需的提供程序。提供程序是与特定类型的数据库进行通信的类。默认为 System.Data.SqlClient 提供程序,该提供程序连接至 Microsoft SQL Server 数据库。
将数据源控件添加到页面中,并设置其数据访问属性。例如,ObjectDataSource 控件需要中间层业务对象类型及一种或多种用于查询或修改数据的方法。SqlDataSource 控件需要一个包含提供程序打开特定数据库时所需信息的连接字符串,以及用于查询或修改数据的一个或多个 SQL 命令。
可以将提供程序和连接信息指定为 SqlDataSource 控件的单独属性,也可以在 Web 应用程序的 Web.config 文件中集中定义提供程序和连接字符串信息。在 Web.config 文件中存储连接信息后,可以重复使用这些信息处理多个数据控件实例。此外,还可以帮助您使用访问控制列表 (ACL) 和加密保护连接字符串信息。有关更多信息,请参见本主题后面的“连接字符串”。
提供程序
ADO.NET 提供程序是可以与特定类型的数据库或数据存储区进行通信的类。例如,一个提供程序可能能够与 SQL Server 数据库进行通信,而另一个提供程序可能能够与 Oracle 数据库进行通信。.NET Framework 中包含的提供程序有:
System.Data.SqlClient 命名空间中用于 SQL Server 的 .NET Framework 数据提供程序。此提供程序为 SqlDataSource 控件的默认提供程序;如果您正在使用SqlDataSource 控件连接至 SQL Server 数据库,则无需显式指定提供程序。
System.Data.OleDb 命名空间中用于 OLE DB 的 .NET Framework 数据提供程序。
System.Data.Odbc 命名空间中用于 ODBC 的 .NET Framework 数据提供程序。
System.Data.OracleClient 命名空间中用于 Oracle 的 .NET Framework 数据提供程序。
可以将 Web.config 文件中的提供程序指定为连接字符串的一部分,也可以指定为页面上的单个数据源控件的属性。
连接字符串
连接字符串提供相关信息,当提供程序与特定数据库进行通信时需要这些信息。可以将连接字符串存储在 Web.config 文件中,并引用数据源控件中的配置项。
连接字符串通常会提供服务器或数据库服务器的位置、要使用的特定数据库及身份验证信息,具体取决于提供程序。与提供程序相同,您可以在 Web.config 文件中指示连接字符串,也可以指示为页面上的单个数据源控件的属性。
连接字符串存储
最佳做法是将连接字符串放在 Web.config 文件中。在 <configuration> 元素元素中,可以创建一个名为 <connectionStrings> 的子元素并将连接字符串置于其中,如此示例所示:
<connectionStrings> <add name="NorthindConnectionString" connectionString=" Server=MyDataServer;Integrated Security=SSPI;Database=Northwind;" providerName="System.Data.SqlClient" /> </connectionStrings>
在此示例中,同时提供了名称和提供程序。应用程序中任何页面上的任何数据源控件都可以引用此连接字符串项。将连接字符串信息存储在 Web.config 文件中的优点是,您可以方便地更改服务器名称、数据库或身份验证信息,而无需编辑各个网页。此外,您可以使用加密保护连接字符串。有关更多信息,请参见如何:确保使用数据源控件时连接字符串的安全。
数据源控件
数据源控件提供数据服务(包括检索和修改数据),这些服务可由其他数据绑定 Web 服务器控件(如 GridView、FormView 和 DetailsView 控件)使用。数据源控件(如 SqlDataSource)会封装连接至数据库以检索或操作数据所需的所有元素(提供程序、连接字符串和查询)。例如,下面的 SqlDataSource 控件配置为连接至数据库并从 Customers 表中读取所有记录:
<asp:SqlDataSource ID="SqlDataSource1" Runat="server" SelectCommand="Select * from Customers" ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>" />
在此示例中,提供程序名称和连接字符串存储于 Web.config 文件中,而 SQL 查询配置为数据源控件的属性。
使用代码执行数据访问
如果不适于在应用程序中使用数据源控件,则可以使用 ADO.NET 类自行对数据访问进行编码。如果使用数据源控件无法满足您的复杂要求,或者如果要创建在网页外部执行数据访问的单独组件,则可以自行对数据访问进行编码。