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# 控制檯項目。如下所示 -

ADO.Net

參考以下示例代碼(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數據庫的連接成功~!");
            }
        }
    }
}

執行上面示例代碼,得到以下結果 -

ADO.Net

下面,演示如何不使用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();
            }
        }
    }
}

執行上面示例代碼,得到以下結果 -

ADO.Net