“连接到 Visual Studio 中的数据”概述

更新:2007 年 11 月

Visual Studio 提供了一些工具,用于将应用程序连接到来自许多不同来源(如数据库、Web 服务及对象)的数据。如果正在使用 Visual Studio 中的数据设计工具,则通常不必为窗体或组件显式创建连接对象。连接对象通常作为完成一个数据向导或将数据对象拖动到窗体的结果来创建。若要将应用程序连接到数据库、Web 服务或对象中的数据,请通过从“数据源”窗口中选择“添加新数据源”来运行数据源配置向导

下面的关系图显示通过执行 TableAdapter 查询连接到数据以获取数据并在 Windows 应用程序中的窗体上显示数据时的标准操作流。

客户端应用程序中的数据流

在某些情况下,您可能会发现不借助于任何数据设计工具来创建连接对象很方便。有关以编程方式创建连接的信息,请参见连接到数据源 (ADO.NET)

说明:

有关将 Web 应用程序连接到数据的信息,请参见通过 ASP.NET 访问数据

创建连接

使用 Visual Studio 时,连接是使用“添加/修改连接”对话框(通用)进行配置的。当在一个数据向导或服务器资源管理器/数据库资源管理器中编辑或创建连接时,或在“属性”窗口中编辑连接属性时,将显示“添加连接”对话框。

执行下列操作之一时将自动配置数据连接:

操作

说明

运行数据源配置向导

当在“数据源配置向导”中选择数据库路径时,将配置连接。有关更多信息,请参见如何:连接到数据库中的数据

运行 TableAdapter 配置向导

在“TableAdapter 配置向导”中创建连接。有关更多信息,请参见如何:创建 TableAdapter

运行 TableAdapter 查询配置向导

在“TableAdapter 查询配置向导”中创建连接。有关更多信息,请参见如何:创建 TableAdapter 查询

将项从“数据源”窗口拖动到窗体或组件设计器中。

将项从“数据源”窗口拖动到“Windows 窗体设计器”或“组件设计器”时,将创建连接对象。有关更多信息,请参见在 Windows 应用程序中的窗体上显示数据

服务器资源管理器/数据库资源管理器中添加新数据连接。

“服务器资源管理器/数据库资源管理器”中的数据连接将显示在数据向导的可用连接列表中。有关更多信息,请参见如何:在服务器资源管理器/数据库资源管理器中添加新的数据连接

连接字符串

所有连接对象都公开大体相同的成员。然而,对于给定 OleDbConnection 对象可用的特定成员取决于它所连接到的数据源;并非所有数据源都支持 OleDbConnection 类的全部成员。

与连接对象相关联的主要属性是 ConnectionString 属性。此属性 (Property) 由带有属性 (Attribute)/值对的字符串(用于提供登录数据库服务器和指向特定数据库所需的信息)组成。典型的 ConnectionString 属性可能如下所示:

Provider=SQLOLEDB.1;Data Source=MySQLServer;Initial Catalog=NORTHWIND;Integrated Security=SSPI

此特定连接字符串指定连接应使用 Windows 集成安全性。连接字符串可以改为包括用户名和密码,但不建议这样做,因为这些属性随后会被编译到您的应用程序中,因而可能对安全性造成潜在危害。

安全说明:

存储连接字符串的详细信息(如密码)可能会影响应用程序的安全性。若要控制对数据库的访问,一种较为安全的方法是使用 Windows 集成安全性。有关更多信息,请参见保护连接信息 (ADO.NET)

OLE DB 最经常使用的属性/值对也分别由单个属性表示,如 DataSource 和 Database。当使用连接对象时,可以将 ConnectionString 属性设置为单个字符串,也可以设置单个连接属性。(如果数据源需要未由单个属性表示的连接字符串值,则必须设置 ConnectionString 属性。)

保存和检索连接字符串

连接字符串可存储于编译的应用程序或应用程序配置文件中。有关更多信息,请参见如何:保存连接字符串

打开和关闭连接

用于连接的两个主要方法是 Open 和 Close。Open 方法使用 ConnectionString 属性中的信息联系数据源并建立一个打开的连接。Close 方法关闭连接。关闭连接是必要的,因为大多数数据源只支持有限数目的打开的连接,并且打开的连接占用宝贵的系统资源。

如果正在使用 TableAdapterDataAdapter 或 DataCommand,则不必显式打开和关闭连接。当调用这些对象的某个方法(例如适配器的 Fill 或 Update 方法)时,该方法将检查连接是否已打开。如果没有,适配器将打开连接,执行其逻辑,然后再关闭连接。

如 Fill 之类的方法仅在连接尚未打开时才自动打开和关闭连接。如果连接是打开的,则这些方法使用连接但并不关闭它。这使您可以自行灵活地打开和关闭数据命令。当有共享一个连接的多个适配器时可能会这样做。在此情况下,让每个适配器在调用其 Fill 方法时均打开和关闭连接将是低效的。相反,可以打开连接,调用每个适配器的 Fill 方法,然后在完成后关闭连接。

池连接

应用程序经常有多个用户执行相同类型的数据库访问。例如,许多用户可能在查询相同的数据库以获取相同的数据。在这些情况下,可以通过使应用程序共享到数据源的连接来提高应用程序的性能。否则,让每个用户打开和关闭单独的连接的开销会对应用程序性能产生不利影响。

如果使用的是 OleDbConnectionOdbcConnectionOracleConnection 类,则连接池将由提供程序自动处理,所以您不必自己进行管理。

如果使用的是 SqlConnection 类,则连接池被隐式管理,但也提供选项允许您自己管理池。有关更多信息,请参见 SQL Server 连接池 (ADO.NET)

事务

连接对象通过 BeginTransaction 方法支持事务,该方法创建事务对象(例如 SqlTransaction 对象)。事务对象反过来支持使您可以提交或回滚事务的方法。

事务以代码进行管理。有关更多信息,请参见 事务 (ADO.NET)

.NET Framework 2.0 版包括新的事务框架(可通过 System.Transactions 命名空间访问)。此框架通过一种完全集成在 .NET Framework(包括 ADO.NET)中的方法来公开事务。有关更多信息,请参见SQL Server 的 System.Transactions 集成 (ADO.NET)

连接信息和安全性

由于打开连接涉及获得对重要资源(数据库)的访问,因此配置和使用连接经常存在安全性问题。

如何保护应用程序及其对数据源访问的安全取决于系统的结构。例如,在基于 Web 的应用程序中,用户通常获得对 Internet 信息服务的匿名访问,因此不提供安全身份验证凭据。在此情况下,应用程序将维护自己的登录信息并使用它(而不是任何特定用户信息)来打开连接和访问数据库。

安全说明:

存储连接字符串的详细信息(如密码)可能会影响应用程序的安全性。若要控制对数据库的访问,一种较为安全的方法是使用 Windows 集成安全性。有关更多信息,请参见保护连接信息 (ADO.NET)

在 Intranet 或多层应用程序中,可以利用 Windows、IIS 和 SQL Server 提供的集成安全性选项。在该模型中,用户在本地网络的身份验证凭据也用于访问数据库资源,并且在连接字符串中不使用任何显式用户名或密码。(通常,通过组在数据库服务器计算机上建立权限,因此您不必为可能访问数据库的每个用户建立单个的权限。)在该模型中,您根本不必存储连接的登录信息,并且不需要任何额外步骤来保护连接字符串信息。

有关安全性的更多信息,请参见以下页:

“服务器资源管理器/数据库资源管理器”中的设计时连接

“服务器资源管理器/数据库资源管理器”为您提供一种创建到数据源的设计时连接的方式。它允许您浏览可用的数据源,显示有关它们包含的表、列及其他元素的信息,以及编辑和创建数据库元素。

您的应用程序不直接使用“服务器资源管理器/数据库资源管理器”中的可用连接。Visual Studio 在设计时使用这些连接来处理数据库。有关更多信息,请参见Visual Database Tools

例如,您可以在设计时使用“服务器资源管理器/数据库资源管理器”创建到数据库的连接。稍后在设计窗体时,可以浏览数据库,从表中选择列,并将它们拖动到数据集设计器上。这将在您的数据集中创建 TableAdapter。还将创建一个新的连接对象(该对象是新创建的 TableAdapter 的一部分)。

有关设计时连接的信息独立于特定的项目或解决方案存储在本地计算机上。因此,在应用程序中工作时建立了设计时连接以后,每当您在 Visual Studio 中工作时它都将出现在“服务器资源管理器/数据库资源管理器”中(只要该连接指向的服务器可用)。有关使用“服务器资源管理器/数据库资源管理器”和创建设计时连接的更多信息,请参见如何:在服务器资源管理器/数据库资源管理器中添加新的数据连接

请参见

任务

如何:连接到数据库中的数据

演练:连接到数据库中的数据

其他资源

连接到 Visual Studio 中的数据

通过 ASP.NET 访问数据

准备应用程序以接收数据

将数据获取到应用程序

在 Windows 应用程序中的窗体上显示数据

在应用程序中编辑数据

验证数据

保存数据