文件首頁
MySQL Connector/NET 開發人員指南
相關文件 下載本手冊
PDF (美式信紙) - 1.3Mb
PDF (A4) - 1.3Mb


MySQL Connector/NET 開發人員指南  /  Connector/NET 連接  /  建立 Connector/NET 連接字串

4.1 建立 Connector/NET 連接字串

MySqlConnection 物件是使用連接字串設定的。連接字串包含數個以分號分隔的索引鍵值組。在每個索引鍵值組中,選項名稱及其對應的值會以等號連接。如需在連接字串中使用的選項名稱清單,請參閱第 4.5 節,〈Connector/NET 連線選項參考〉

以下為連接字串範例

"server=127.0.0.1;uid=root;pwd=12345;database=test"

在此範例中,MySqlConnection 物件已設定為連線至 127.0.0.1 的 MySQL 伺服器,使用者名稱為 root,密碼為 12345。所有陳述式的預設資料庫將為 test 資料庫。

Connector/NET 支援數種連線模型

開啟單一伺服器的連線

建立連接字串後,即可使用它來開啟與 MySQL 伺服器的連線。

以下程式碼用於建立 MySqlConnection 物件、指派連接字串,並開啟連線。

MySQL Connector/NET 也可以使用原生 Windows 驗證外掛程式連線。詳細資訊請參閱第 4.4 節,〈Connector/NET 驗證〉

您可以透過撰寫自己的驗證外掛程式來進一步擴充驗證機制。詳細資訊請參閱第 5.8 節,〈撰寫自訂驗證外掛程式〉

C# 範例

MySql.Data.MySqlClient.MySqlConnection conn;
string myConnectionString;

myConnectionString = "server=127.0.0.1;uid=root;" +
    "pwd=12345;database=test";

try
{
    conn = new MySql.Data.MySqlClient.MySqlConnection();
    conn.ConnectionString = myConnectionString;
    conn.Open();
}
catch (MySql.Data.MySqlClient.MySqlException ex)
{
    MessageBox.Show(ex.Message);
}

Visual Basic 範例

Dim conn As New MySql.Data.MySqlClient.MySqlConnection
Dim myConnectionString as String

myConnectionString = "server=127.0.0.1;" _
            & "uid=root;" _
            & "pwd=12345;" _
            & "database=test"

Try
  conn.ConnectionString = myConnectionString
  conn.Open()

Catch ex As MySql.Data.MySqlClient.MySqlException
  MessageBox.Show(ex.Message)
End Try

您也可以將連接字串傳遞至 MySqlConnection 類別的建構函式

C# 範例

MySql.Data.MySqlClient.MySqlConnection conn;
string myConnectionString;

myConnectionString = "server=127.0.0.1;uid=root;" +
    "pwd=12345;database=test";

try
{
    conn = new MySql.Data.MySqlClient.MySqlConnection(myConnectionString);
    conn.Open();
}
catch (MySql.Data.MySqlClient.MySqlException ex)
{
    MessageBox.Show(ex.Message);
}

Visual Basic 範例

Dim myConnectionString as String

myConnectionString = "server=127.0.0.1;" _
              & "uid=root;" _
              & "pwd=12345;" _
              & "database=test"

Try
    Dim conn As New MySql.Data.MySqlClient.MySqlConnection(myConnectionString)
    conn.Open()
Catch ex As MySql.Data.MySqlClient.MySqlException
   MessageBox.Show(ex.Message)
End Try

連線開啟後,其他 Connector/NET 類別即可使用它來與 MySQL 伺服器通訊。

開啟具容錯移轉的多個主機連線

應用程式使用的資料可以儲存在多個 MySQL 伺服器上,以提供高可用性。Connector/NET 提供一種簡單的方式,可以在連接字串中指定多個主機,以便在多個 MySQL 伺服器設定為複寫時,並且您不關心應用程式連線至集合中的哪個精確伺服器的情況下使用。如需如何設定具有複寫的多個主機範例,請參閱使用複寫與負載平衡

從 Connector/NET 8.0.19 開始,傳統 MySQL 通訊協定和 X 通訊協定連線都允許在連接字串或 URI 配置中使用多個主機名稱和多個端點(host:port 配對)。例如

// classic protocol example
"server=10.10.10.10:3306,192.101.10.2:3305,localhost:3306;uid=test;password=xxxx"

// X Protocol example
mysqlx://test:test@[192.1.10.10:3305,127.0.0.1:3306]

更新後的容錯移轉方法會先依優先順序(如果已提供)或未指定優先順序時的隨機順序來選取連線目標。如果嘗試連線至選定的目標失敗,Connector/NET 會從清單中選取新的目標,直到沒有更多主機可用為止。如果已啟用,Connector/NET 會使用連線集區來管理不成功的連線(請參閱第 4.2 節,〈在 Connector/NET 中管理連線集區〉)。

使用單一 DNS 網域開啟連線

當多個 MySQL 執行個體在您的安裝中提供相同的服務時,您可以套用 DNS 服務 (SRV) 記錄來提供容錯移轉、負載平衡和複寫服務。DNS SRV 記錄可讓用戶端無需在連接字串中識別每個可能的主機,或讓連線由其他軟體元件處理。它們也可以在將伺服器新增或從組態中移除,或變更其主機名稱時,由管理員集中更新。DNS SRV 記錄可以與連線集區結合使用,在這種情況下,當連線閒置時,會從集區中移除與目前 SRV 記錄清單中已不存在的主機的連線。如需有關 MySQL 中 DNS SRV 支援的資訊,請參閱使用 DNS SRV 記錄連線至伺服器

服務記錄是網域名稱系統所管理資料的規格,定義指定服務的伺服器位置(主機名稱和連接埠號碼)。記錄格式定義 RFC 2782 規格中定義的服務優先順序、權重、連接埠和目標(請參閱https://tools.ietf.org/html/rfc2782)。在下列具有四個伺服器目標的 SRV 記錄範例(適用於 _mysql._tcp.foo.abc.com.)中,Connector/NET 使用 foo2foo1foo3foo4 的伺服器選取順序。

Name                      TTL   Class   Priority Weight Port  Target
_mysql._tcp.foo.abc.com. 86400 IN SRV   0        5      3306  foo1.abc.com
_mysql._tcp.foo.abc.com. 86400 IN SRV   0        10     3306  foo2.abc.com
_mysql._tcp.foo.abc.com. 86400 IN SRV   10       5      3306  foo3.abc.com
_mysql._tcp.foo.abc.com. 86400 IN SRV   20       5      3306  foo4.abc.com

若要使用 DNS SRV 記錄開啟連線,請將 dns-srv 連線選項新增至您的連接字串。例如

C# 範例

var conn = new MySqlConnection("server=_mysql._tcp.foo.abc.com.;dns-srv=true;" +
             "user id=user;password=****;database=test");

如需更多關於傳統 MySQL 協定和 X 協定的使用範例與限制,請參閱傳統 MySQL 協定和 X 協定的選項