4.3 处理连接错误

因为连接到外部服务器是不可预测的,所以向 .NET 应用程序添加错误处理非常重要。当连接出错时, MySqlConnection该类将返回一个 MySqlException对象。该对象有两个处理错误时需要关注的属性:

  • Message:描述当前异常的消息。

  • Number:MySQL错误号。

处理错误时,您可以根据错误编号调整应用程序的响应。连接时最常见的两个错误号如下:

  • 0: 无法连接到服务器。

  • 1045: 无效的用户名、用户密码或两者。

以下代码示例显示了如何根据实际错误管理应用程序的响应:

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)
{
    switch (ex.Number)
    {
        case 0:
            MessageBox.Show("Cannot connect to server.  Contact administrator");
            break;
        case 1045:
            MessageBox.Show("Invalid username/password, please try again");
            break;
    }
}

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
    Select Case ex.Number
        Case 0
            MessageBox.Show("Cannot connect to server. Contact administrator")
        Case 1045
            MessageBox.Show("Invalid username/password, please try again")
    End Select
End Try
重要的

如果您使用的是多语言数据库,则必须在连接字符串中指定字符集。如果不指定字符集,则连接默认为 latin1字符集。您可以将字符集指定为连接字符串的一部分,例如:

MySqlConnection myConnection = new MySqlConnection("server=127.0.0.1;uid=root;" +
    "pwd=12345;database=test;Charset=latin1");