SqlConnection 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
表示對 SQL Server 資料庫的連線。 此類別無法獲得繼承。
public ref class SqlConnection sealed : System::Data::Common::DbConnection, ICloneable
public sealed class SqlConnection : System.Data.Common.DbConnection, ICloneable
type SqlConnection = class
inherit DbConnection
interface ICloneable
Public NotInheritable Class SqlConnection
Inherits DbConnection
Implements ICloneable
- 繼承
-
SqlConnection
- 實作
範例
下列範例會 SqlCommand 建立 和 SqlConnection。 SqlConnection會開啟 ,並將 設定為 Connection 的 SqlCommand。 然後範例會呼叫 ExecuteNonQuery。 若要達成此目的,會ExecuteNonQuery傳遞 連接字串 和 Transact-SQL INSERT 語句的查詢字串。 當程式代碼結束 using 區塊時,會自動關閉連線。
using System;
using System.Data;
using Microsoft.Data.SqlClient;
namespace SqlCommandCS
{
class Program
{
static void Main()
{
string str = "Data Source=(local);Initial Catalog=Northwind;"
+ "Integrated Security=SSPI";
string qs = "SELECT OrderID, CustomerID FROM dbo.Orders;";
CreateCommand(qs, str);
}
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();
}
}
}
}
備註
SqlConnection物件代表 SQL Server 數據源的唯一會話。 使用用戶端/伺服器資料庫系統時,相當於與伺服器的網路連線。 SqlConnection與 搭配SqlDataAdapter使用 ,SqlCommand以在連線到 Microsoft SQL Server 資料庫時提升效能。 針對所有第三方 SQL Server 產品和其他 OLE DB 支援的數據來源,請使用 OleDbConnection。
當您建立的 SqlConnection實例時,所有屬性都會設定為其初始值。 如需這些值的清單,請參閱建 SqlConnection 構函式。
如需 連接字串 中的關鍵字清單,請參閱 ConnectionString 。
SqlConnection如果超出範圍,則不會關閉。 因此,您必須呼叫 Close
或 Dispose
來明確關閉連線。 Close
和 Dispose
在功能上相等。 如果連線共享值 Pooling
設定 true
為 或 yes
,基礎連接會傳回至連接集區。 另一方面,如果 Pooling
設定為 false
或 no
,則實際關閉與伺服器的基礎連線。
注意
從連接集區中擷取連接或將連接傳回連接集區時,系統不會在伺服器上引發登入和登出事件,因為當連接傳回連接集區時,連接實際上並未關閉。 如需詳細資訊,請參閱 SQL Server 連線共用 (ADO.NET) \(機器翻譯\)。
若要確保一律關閉連線,請在 區塊內 using
開啟連線,如下列代碼段所示。 這麼做可確保當程式代碼結束區塊時,會自動關閉連線。
Using connection As New SqlConnection(connectionString)
connection.Open()
' Do work here; connection closed on following line.
End Using
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
// Do work here; connection closed on following line.
}
注意
若要部署高效能應用程式,您必須使用連線共用。 當您使用 .NET Framework Data Provider for SQL Server 時,您不需要啟用連線共用,因為提供者會自動管理此設定,不過您可以修改某些設定。 如需詳細資訊,請參閱 SQL Server 連線共用 (ADO.NET) \(機器翻譯\)。
SqlException如果 由執行SqlCommand的 方法產生 ,當嚴重性層級為19或更少時,仍SqlConnection會保持開啟狀態。 當嚴重性層級為 20 或更新時,伺服器通常會關閉 SqlConnection。 但是,使用者可以再次開啟連線,然後繼續進行。
建立 物件實例 SqlConnection 的應用程式,可以藉由設定宣告式或命令式安全性需求,要求所有直接和間接呼叫者擁有足夠的程式碼許可權。 SqlConnection 使用物件提出安全性需求 SqlClientPermission 。 用戶可以使用 對象來確認其程式代碼具有足夠的許可權 SqlClientPermissionAttribute 。 用戶和系統管理員也可以使用 Caspol.exe (代碼啟用安全策略工具) 修改計算機、使用者和企業層級的安全策略。 如需詳細資訊,請參閱 .NET 的安全性。 如需示範如何使用安全性需求的範例,請參閱代碼啟用安全性和 ADO.NET。
如需從伺服器處理警告和參考訊息的詳細資訊,請參閱 連線事件。 如需 SQL Server 引擎錯誤和錯誤訊息的詳細資訊,請參閱 Database Engine 事件和錯誤。
警告
您可以強制 TCP 而非共享記憶體。 您可以藉由將 tcp: 前置詞到 連接字串 中的伺服器名稱,或使用localhost來執行此動作。
建構函式
SqlConnection() |
初始化 SqlConnection 類別的新執行個體。 |
SqlConnection(String) |
指定包含連接字串的字串時,初始化 SqlConnection 類別的新執行個體。 |
SqlConnection(String, SqlCredential) |
指定不使用 |
屬性
AccessToken |
取得或設定此連接的存取權杖。 |
AccessTokenCallback |
取得或設定連線的存取令牌回呼。 |
CanCreateBatch |
取得值,指出這個 SqlConnection 執行個體是否支援 DbBatch 類別。 |
ClientConnectionId |
最近連線的連線 ID,無論連線是否成功。 |
ColumnEncryptionKeyCacheTtl |
針對 Always Encrypted 功能,取得或設定資料行加密金鑰快取中資料行加密金鑰項目的存留時間。 預設值是 2 小時。 0 表示完全沒有快取。 |
ColumnEncryptionQueryMetadataCacheEnabled |
取得或設定值,指出是否要針對根據已啟用 Always Encrypted 的資料庫執行的參數化查詢,啟用 (true) 或停用 (false) 查詢中繼資料快取。 預設值為 true。 |
ColumnEncryptionTrustedMasterKeyPaths |
可讓您為資料庫伺服器設定受信任的金鑰路徑清單。 如果在處理應用程式查詢時,驅動程式收到的機碼路徑不在清單上,查詢就會失敗。 此屬性會針對受到安全性攻擊危害的 SQL Server 提供額外的保護,此類 SQL Server 會提供假的金鑰路徑,而可能會導致遺漏金鑰存放區認證。 |
CommandTimeout |
取得在終止執行命令併產生錯誤之前,) 以秒為單位的預設等候時間 (。 預設值為 30 秒。 |
ConnectionString |
取得或設定用來開啟 SQL Server 資料庫的字串。 |
ConnectionTimeout |
取得在終止嘗試並產生錯誤前嘗試建立連接的等待時間。 |
Credential |
取得或設定這個連接的 SqlCredential 物件。 |
Database |
取得目前資料庫或要在連接開啟之後使用的資料庫名稱。 |
DataSource |
取得要連線的 SQL Server 執行個體名稱。 |
FireInfoMessageEventOnUserErrors |
取得或設定 FireInfoMessageEventOnUserErrors 屬性。 |
PacketSize |
取得用來與 SQL Server 執行個體通訊的網路封包大小 (位元組)。 |
RetryLogicProvider |
取得或設定值,其指定繫結至這個命令的 SqlRetryLogicBaseProvider 物件。 |
ServerProcessId |
取得使用中連線的伺服器進程標識碼 (SPID) 。 |
ServerVersion |
取得字串,其中包含用戶端連線的 SQL Server 執行個體版本。 |
State |
指出在連接上執行最近一次網路作業期間的 SqlConnection 狀態。 |
StatisticsEnabled |
設定為 |
WorkstationId |
取得識別資料庫用戶端的字串。 |
方法
事件
InfoMessage |
發生於 SQL Server 傳回警告或告知性訊息時。 |
明確介面實作
ICloneable.Clone() |
建立目前執行個體複本的新物件。 |