编辑
2025-09-22
C#
00

目录

摘要
正文
核心 Connection 对象
基本用法
基本语法
注意事项

摘要

Connection对象也称为数据库连接对象,Connection对象的功能是负责对数据源的连接。所有Connection对象的基类都是DbConnection类。

正文

核心 Connection 对象

以下是几种常见数据库对应的 .NET Framework 数据提供程序中的 Connection 对象:

  • SqlConnection:用于连接到 SQL Server 数据库。
  • OleDbConnection:用于连接到支持 OLE DB 的数据源,例如 Microsoft Access、Excel,以及其他数据库。
  • OdbcConnection:用于连接到支持 ODBC 的数据源,适用于多种数据库。
  • OracleConnection:用于连接到 Oracle 数据库(在较新的 .NET 版本中,可能需要使用 Oracle 提供的专门库)。

基本用法

Connection 对象的使用通常遵循以下步骤:

  1. 实例化:根据所需的数据库类型,创建一个对应的 Connection 对象的实例。
  2. 设置连接字符串:连接字符串包含了数据库的位置、数据库名称、登录凭证(用户名和密码)以及其他配置信息。每种 Connection 对象都有一个 ConnectionString 属性,用于设置这些信息。
  3. 打开连接:通过调用 Connection 对象的 Open 方法来建立到数据库的连接。
  4. 执行操作:一旦连接打开,就可以使用 Command 对象来执行 SQL 语句或存储过程。
  5. 关闭连接:操作完成后,应该通过调用 Connection 对象的 Close 方法来关闭连接。为了更好的资源管理,建议使用 using 语句来确保连接正确关闭。

基本语法

数据源(Data Source)+数据库名称(Initial Catalog)+用户名(User ID)+密码(Password)

SQL Server连接字符串

C#
Data Source=.;Initial Catalog=myDataBase;User Id=myUsername;Password=myPassword; Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;Trusted_Connection=False;

可信连接

C#
Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI; Server=myServerAddress;Database=myDatabase;Trusted_Connection=True;

Access连接字符串

C#
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\myDatabase.mdb;User Id=admin;Password=;

MySQL连接字符串

C#
Server=myServerAddress;Database=myDatabase;Uid=myUsername;Pwd=myPassword;

Oracle连接字符串

C#
Data Source=TORCL;User Id=myUsername;Password=myPassword; 

调用Connection对象的Open方法或Close方法可以打开或关闭数据库连接,而且必须在设置好数据库连接字符串后才能调用Open方法,否则Connection.对象不知道要与哪一个数据库建立连接。

Connection对象有两个重要属性:

  • ConnectionString:表示用于打开 SQL Server 数据库的字符串;
  • State:表示 Connection 的状态,有Closed和Open两种状态。

Connection对象有两个重要方法:

  • Open()方法:指示打开数据库;
  • Close()方法:指示关闭数据库。

image.png

C#
using (SqlConnection conn1 = new SqlConnection("连接字符串")) { conn.Open(); }

App.config

XML
<appSettings> <add key="DataConnString" value="Server=127.0.0.1;Database=db;Max Pool Size=50;Min Pool Size=5;Uid=sa;Pwd=123"/> </appSettings>
C#
SqlConnection conn = new SqlConnection(); conn.ConnectionString = System.Configuration.ConfigurationManager.AppSettings["DataConnString"].ToString(); conn.Open(); Console.WriteLine(conn.State); conn.Close();

注意:打开一个数据库连接,一定用完关闭

完整一段

C#
string ConnectionString = System.Configuration.ConfigurationManager.AppSettings["DataConnString"].ToString(); using (SqlConnection conn = new SqlConnection(ConnectionString)) { conn.Open(); //do something } SqlConnection conn = new SqlConnection(); string ConnectionString = System.Configuration.ConfigurationManager.AppSettings["DataConnString"].ToString(); try { conn.ConnectionString = ConnectionString; conn.Open(); } catch { } finally { conn.Close(); }

属性

AccessToken获取或设置用于连接的访问令牌。
CanCreateBatch获取一个值,该值指示此 DbConnection 是否支持 DbBatch 类。 (继承自 DbConnection)
ClientConnectionId最近连接尝试连接的 ID,无论该尝试是成功还是失败。
ConnectionString获取或设置用于打开 SQL Server 数据库的字符串。
ConnectionTimeout获取在尝试建立连接时终止尝试并生成错误之前所等待的时间(以秒为单位)。
Credential获取或设置此连接的 SqlCredential 对象。
Database获取当前数据库的名称或打开连接后要使用的数据库的名称。
DataSource获取要连接的 SQL Server 的实例的名称。
DbProviderFactory获取此 DbProviderFactoryDbConnection。 (继承自 DbConnection)
PacketSize获取用于与 SQL Server 的实例进行通信的网络数据包的大小(以字节为单位)。
ServerVersion获取一个字符串,其中包含客户端所连接到的 SQL Server 的实例的版本。
State最近在连接上执行网络操作时表示 SqlConnection 的状态。
StatisticsEnabled如果设置为 true,则对当前连接启用统计信息收集。
WorkstationId获取一个标识数据库客户端的字符串。

方法

BeginDbTransaction(IsolationLevel)在派生类中重写时,启动数据库事务。 (继承自 DbConnection)
BeginDbTransactionAsync(IsolationLevel, CancellationToken)异步启动数据库事务。 (继承自 DbConnection)
BeginTransaction()开始数据库事务。
BeginTransaction(IsolationLevel)以指定的隔离级别启动数据库事务。
BeginTransaction(IsolationLevel, String)以指定的隔离级别和事务名称启动数据库事务。
BeginTransaction(String)以指定的事务名称启动数据库事务。
BeginTransactionAsync(CancellationToken)异步开始数据库事务。 (继承自 DbConnection)
BeginTransactionAsync(IsolationLevel, CancellationToken)异步开始数据库事务。 (继承自 DbConnection)
ChangeDatabase(String)更改已打开的 SqlConnection 的当前数据库。
ChangeDatabaseAsync(String, CancellationToken)为打开的连接对象异步更改当前数据库。 (继承自 DbConnection)
ChangePassword(String, SqlCredential, SecureString)更改 SqlCredential 对象中指示的用户的 SQL Server 密码。
ChangePassword(String, String)将连接字符串中指示的用户的 SQL Server 密码更改为提供的新密码。
ClearAllPools()清空连接池。
ClearPool(SqlConnection)清空与指定连接关联的连接池。
Close()关闭与数据库之间的连接。 此方法是关闭任何打开连接的首选方法。
CloseAsync()异步关闭与数据库之间的连接。 (继承自 DbConnection)
CreateBatch()返回实现 DbBatch 类的提供程序类的一个新实例。 (继承自 DbConnection)
CreateCommand()创建并返回与 SqlConnection 关联的 SqlCommand 对象。
CreateDbBatch()在派生类中重写时,返回实现 DbBatch 该类的提供程序类的新实例。 (继承自 DbConnection)
CreateDbCommand()在派生类中重写时,创建并返回与当前连接关联的 DbCommand 对象。 (继承自 DbConnection)
EnlistTransaction(Transaction)在指定事务中登记。 (继承自 DbConnection)
OnStateChange(StateChangeEventArgs)引发 StateChange 事件。 (继承自 DbConnection)
Open()使用由 ConnectionString 指定的属性设置打开一个数据库连接。
OpenAsync()Open()的异步版本,打开由 ConnectionString指定的设置的数据库连接。 此方法通过 CancellationToken.None 调用虚拟方法 OpenAsync(CancellationToken)。 (继承自 DbConnection)
OpenAsync(CancellationToken)Open() 的异步版本,打开 ConnectionString 指定的属性设置的数据库连接。 取消标记可用于请求在连接超时超过前放弃操作。 异常将通过返回的任务传播。 如果在未成功连接的情况下连接超时时间已过,则返回的任务将被标记为“附带异常出错”。 实现返回一个不带有用于共用和非共用连接的锁定调用线程的“任务”。
ResetStatistics()如果启用了统计信息收集,所有值都将重置为零。
RetrieveStatistics()调用此方法时,将返回统计信息的名称值对集合。

注意事项

  • 安全性:在设置连接字符串时,应注意保护敏感信息,如用户名和密码。考虑使用集成安全性(Windows 身份验证)来避免在连接字符串中明文存储凭证。
  • 资源管理:数据库连接是有限的资源。确保不在需要时及时关闭连接,避免资源泄露和性能问题。使用 using 语句可以自动管理连接的关闭。
  • 异常处理:在连接数据库时可能会遇到各种异常(如网络问题、身份验证失败等)。合理处理这些异常可以提高应用程序的健壮性和用户体验。

本文作者:技术老小子

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!