?
一、SqlConnection类简介
-
语法:? public sealed class SqlConnection : DbConnection,ICloneable
- 表示 与SQL Server 数据库的连接。 此类不能被继承。
-
命名空间: ?System.Data.SqlClient
程序集: ?System.Data(在 System.Data.dll 中)
-
SqlConnection 对象表示与 SQL Server 数据源的一个唯一的会话。 在客户端/服务器数据库系统中,它等效于一个到服务器的网络连接。 SqlConnection 与SqlDataAdapter 和SqlCommand 一起使用,以便在连接到 Microsoft SQL Server 数据库时提高性能。
-
-
当创建 SqlConnection 的实例时,所有属性都设置为它们的初始值,如下表所示。只能使用 ConnectionString 属性更改这些属性的值 。
|
ConnectionString
空字符串 ("")
ConnectionTimeout
15
Database
空字符串 ("")
DataSource
空字符串 ("")
?
-
如果 SqlConnection 超出范围,则不会将其关闭。 因此,必须通过调用Close或Dispose显式关闭该连接。 Close 和 Dispose 的功能等效。若要确保连接始终关闭,请在 using 块内部打开连接,如下面的代码段所示。 这样可确保在代码退出代码块时自动关闭连接。
??????????? ?例如:
using (SqlConnection connection = new SqlConnection(connectionString))
? {
????? connection.Open();
?????? // Do work here; connection closed on following line.
? }
-
如果执行 SqlCommand 的方法生成SqlException,那么当严重级别小于等于 19 时,SqlConnection 将仍保持打开状态。 当严重级别大于等于 20 时,服务器通常会关闭 SqlConnection。 但是,用户可以重新打开连接并继续操作。
-
下面的示例创建一个 SqlCommand 和一个 SqlConnection。 SqlConnection 打开,并设置为SqlCommand 的Connection。 该示例然后调用ExecuteNonQuery。 为了完成此任务,将为ExecuteNonQuery 传递一个连接字符串和一个查询字符串,后者是一个 Transact-SQL INSERT 语句。 当代码使用块退出时,连接自动关闭。
private static void CreateCommand(string queryString,
??? string connectionString)
{
??? using (SqlConnection connection = new SqlConnection(
?????????????? connectionString))
??? {
??????? SqlCommand command = new SqlCommand(queryString,connection);
??????? command.Connection.Open();
??????? command.ExecuteNonQuery();
??? }
}
?
?
二、两种构造函数
?
(1)public SqlConnection()
(2)public SqlConnection(string connectionString)
?
三、常用属性??????
1、获取当前连接的状态-------State
?? [ BrowsableAttribute(false)]
public override ConnectionState State { get; }
ConnectionState的枚举成员
Closed
连接处于关闭状态。
Open
连接处于打开状态。
Connecting
连接对象正在与数据源连接。 (该值是为此产品的未来版本保留的。)
Executing
连接对象正在执行命令。 (该值是为此产品的未来版本保留的。)
Fetching
连接对象正在检索数据。 (该值是为此产品的未来版本保留的。)
Broken
与数据源的连接中断。 只有在连接打开之后才可能发生这种情况。 可以关闭处于这种状态的连接,然后重新打开。 (该值是为此产品的未来版本保留的。)
2、获取或设置用于打开 SQL Server 数据库的字符串。-----------ConnectionString
????? [SettingsBindableAttribute(true)]
public override string ConnectionString { get; set; }
连接字符串,其中包含源数据库名称和建立初始连接所需的其他参数
如果“Persist Security Info”值设置为 false(默认值),则返回的连接字符串与用户设置的 ConnectionString 相同但去除了安全信息。 除非将“Persist Security Info”设置为 true,否则,SQL Server .NET Framework 数据提供程序将不会保持,也不会返回连接字符串中的密码。
只有在连接关闭时才能设置 ConnectionString 属性
3、获取要连接的 SQL Server 实例的名称。---------DataSource
[BrowsableAttribute(true)]
public override string DataSource { get; }
如果 SqlConnection 的连接字符串为“context connection=true”,DataSource 属性将返回 null。
4、获取当前数据库的名称或连接打开后要使用的数据库的名称。----DateBase
public override string Database { get; }
Database 属性会动态更新。 如果使用 Transact-SQL 语句或 ChangeDatabase 方法更改当前数据库,就会发送信息性消息并自动更新此属性。
5、获取等待连接打开的时间(以秒为单位)。-----------ConnectionTimeOut
public override int ConnectionTimeout { get; }
?
四、常用方法
1、打开与数据库的连接---------Open
public override void Open()
2、关闭与数据库的连接--------Close
public override void Close()
此方法是关闭任何已打开连接的首选方法。
应用程序可以多次调用 Close。 不会生成任何异常。
?
3、public void Dispose ()
释放由 Component 使用的所有资源
?
4、关闭连接的 Close()方法和Dispose()的区别
?? Close方法用于关闭一个连接,而Dispose方法不仅关闭一个连接,而且还清理连接所占用的资源。当使用Close方法关闭连接后,可以再调用Open方法打开连接。而若用Dispose方法关闭连接则不可以再次直接调用Open方法打开连接,必须初始化连接之后再打开即重新建立SqlConnection对象。
?
5、创建并返回一个与 SqlConnection 关联的 SqlCommand 对象--------CreateCommand
public SqlCommand CreateCommand()
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!