ADO.Net SqlConnection類


SqlConnection類用於建立到SQL Server資料庫的開放連線。這是一個封閉的類,所以不能被繼承。連線到Microsoft SQL Server資料庫時,SqlConnection類與SqlDataAdapterSqlCommand類一起使用來提高效能。

即使連線超出範圍,連線也不會明確關閉。 因此,在程式碼中必須通過呼叫Close()方法顯式關閉連線。

SqlConnection類簽名

public sealed class SqlConnection : System.Data.Common.DbConnection, ICloneable, IDisposable

SqlConnection類建構函式

編號 建構函式 描述
1 SqlConnection() 它用於初始化SqlConnection類的新範例。
2 SqlConnection(String) 它用於初始化SqlConnection類的新範例,並將連線字串作為引數。
3 SqlConnection(String, SqlCredential) 它用於初始化一個帶有兩個引數的SqlConnection類的新範例。首先是連線字串,其次是SQL憑據。

SqlConnection類的方法

編號 方法 描述
1 BeginTransaction() 它用於啟動資料庫事務。
2 ChangeDatabase(String) 它用於更改當前資料庫以開啟SqlConnection
3 ChangePassword(String, String) 它會更改連線字串中指示的使用者的SQL Server密碼。
4 Close() 它用於關閉與資料庫的連線。
5 CreateCommand() 它作為分散式事務在指定的事務中使用。
6 GetSchema() 它返回這個SqlConnection的資料源的模式資訊。
7 Open() 它用來開啟資料庫連線。
8 ResetStatistics() 如果啟用統計資訊收集,它會重置所有值。

SqlConnection範例

現在,下面來建立一個與SQL Server建立連線的例子。前面一節的教學中,已經建立了一個名稱:student 的資料庫,這裡將演示如何連線到這個資料庫。參考下面的 C# 程式碼。

using (SqlConnection connection = new SqlConnection(connectionString))    
{    
  connection.Open();         
}

程式碼中的using塊可以自動關閉連線。所以不需要明確地呼叫close()方法來關閉資料庫的連線,using塊程式碼會在程式碼退出時隱式執行。

為了方便演示,這裡建立一個名稱為:SqlConnectionApp 的 C# 控制台專案。如下所示 -

參考以下範例程式碼(TestConnection.cs) -

using System;
using System.Data.SqlClient;

namespace SqlConnectionApp
{
    class TestConnection
    {
        static void Main(string[] args)
        {
            new TestConnection().Connecting();
        }
        public void Connecting()
        {
            using (
                     // Creating Connection  
                     SqlConnection con = new SqlConnection("data source=.; database=student; integrated security=SSPI")
                 )
            {
                con.Open();
                Console.WriteLine("建立與SQL Server資料庫的連線成功~!");
            }
        }
    }
}

執行上面範例程式碼,得到以下結果 -

下面,演示如何不使用using塊。

如果不使用using塊來建立連線,必須明確地關閉連線。在下面的例子中,我們使用try塊而不是使用using塊。參考以下程式碼實現(TestConnection2.cs) -

using System;
using System.Data.SqlClient;

namespace SqlConnectionApp
{

    class TestConnection2
    {
        static void Main(string[] args)
        {
            new TestConnection2().Connecting();
        }
        public void Connecting()
        {
            SqlConnection con = null;
            try
            {
                // Creating Connection  
                con = new SqlConnection("data source=.; database=student; integrated security=SSPI");
                con.Open();
                Console.WriteLine("建立與SQL Server資料庫的連線成功~!");

                // 查詢SQL Server 資料庫的版本
                SqlCommand cm = new SqlCommand("Select @@version as version", con);
                // Executing the SQL query  
                SqlDataReader sdr = cm.ExecuteReader();
                // Iterating Data  
                while (sdr.Read())
                {
                    Console.WriteLine("SQL Server 資料庫的版本是: " + sdr["version"]); // Displaying Record  
                }
            }
            catch (Exception e)
            {
                Console.WriteLine("程式出錯了,不知道發生了什麼~!\n" + e);
            }
            finally
            {   // Closing the connection  
                con.Close();
            }
        }
    }
}

執行上面範例程式碼,得到以下結果 -