Spec-Zone .ru
спецификации, руководства, описания, API

22.2.5.2. Создание Строки подключения Соединителя/Сети

MySqlConnection объект конфигурируется, используя строку подключения. Строка подключения содержит несколько пар ключ/значение, разделенных точками с запятой. В каждой паре ключ/значение к имени опции и его соответствующему значению присоединяется знак "равно". Для списка имен опции, чтобы использовать в строке подключения, см. Раздел 22.2.6, "Ссылка Опций Строки подключения Соединителя/Сети".

Следующее является демонстрационной строкой подключения:

Server=127.0.0.1;Uid=root;Pwd=12345;Database=test;

В этом примере, MySqlConnection объект конфигурируется, чтобы соединиться с сервером MySQL в 127.0.0.1, с именем пользователя root и пароль 12345. База данных значения по умолчанию для всех операторов будет test база данных.

Отметить

Используя символ для параметров является теперь привилегированным подходом, хотя старый образец использования'?' все еще поддерживается. Чтобы избежать конфликтов при использовании символ в комбинации с пользовательскими переменными, см. Allow User Variables опция строки подключения в Разделе 22.2.6, "Ссылка Опций Строки подключения Соединителя/Сети". Old Syntax опция строки подключения была теперь осуждена.

22.2.5.2.1. Открытие Соединения

Как только Вы создали строку подключения, она может использоваться, чтобы открыть соединение с сервером MySQL.

Следующий код используется, чтобы создать a MySqlConnection возразите, присвойте строку подключения, и откройте соединение.

Соединитель/Сеть может также соединить использование собственного плагина аутентификации Windows. См. Раздел 22.2.5.5, "Используя Windows Native Authentication Plugin" для деталей.

Можно далее расширить механизм аутентификации при записи Вашего собственного плагина аутентификации. См. Раздел 22.2.5.6, "Пишущий Пользовательский Плагин Аутентификации" для деталей.

Пример Visual Basic
Dim conn As New MySql.Data.MySqlClient.MySqlConnectionDim myConnectionString as StringmyConnectionString = "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
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);}

Можно также передать строку подключения конструктору MySqlConnection class:

Пример Visual Basic
Dim myConnectionString as StringmyConnectionString = "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
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);}

Как только соединение открыто, оно может использоваться другими классами Соединителя/Сети, чтобы связаться с сервером MySQL.

22.2.5.2.2. Обработка Ошибок Соединения

Поскольку соединение с внешним сервером непредсказуемо, важно добавить обработку ошибок к Вашему приложению.NET. Когда есть ошибка, соединяясь, MySqlConnection class возвратит a MySqlException объект. У этого объекта есть два свойства, которые представляют интерес когда ошибки из-за неправильного обращения:

  • Message: Сообщение, которое описывает текущее исключение.

  • Number: Код ошибки MySQL.

Когда ошибки из-за неправильного обращения, Вы можете ответ своего приложения, основанный на коде ошибки. Два наиболее распространенных кода ошибки, соединяясь следующие:

  • 0: Не может соединиться с сервером.

  • 1045: Недопустимое имя пользователя и/или пароль.

Следующий код показывает, как адаптировать ответ приложения, основанный на фактической ошибке:

Пример Visual Basic
Dim myConnectionString as StringmyConnectionString = "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 SelectEnd Try
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");        case 1045:            MessageBox.Show("Invalid username/password, please try again");    }}
Важный

Отметьте, что, если Вы используете многоязыковые базы данных, следует определить набор символов в строке подключения. Если Вы не определяете набор символов, значения по умолчанию соединения к latin1 набор символов. Можно определить набор символов как часть строки подключения, например:

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

22.2.5.2.3. Используя GetSchema на Соединении

GetSchema() метод объекта соединения может использоваться, чтобы получить информацию о схеме о базе данных, в настоящий момент соединенной с. Информация о схеме возвращается в форме a DataTable. Информация о схеме организуется во многие наборы. Различные формы GetSchema() метод может использоваться в зависимости от запрошенной информации. Есть три формы GetSchema() метод:

  • GetSchema() - Этот вызов возвратит список доступных наборов.

  • GetSchema(String) - Это звонит информации о возвратах по поводу набора, названного в строковом параметре. Если строка "MetaDataCollections" используется тогда, список всех доступных наборов возвращается. Это - то же самое как вызов GetSchema() без любых параметров.

  • GetSchema(String, String[]) - В этом вызове первый строковый параметр представляет имя набора, и второй параметр представляет строковый массив значений ограничения. Значения ограничения ограничивают объем данных, который будет возвращен. Значения ограничения объясняются более подробно в документации Microsoft.NET.

22.2.5.2.3.1. Наборы

Наборы могут быть широко сгруппированы в два типа: наборы, которые характерны для всех провайдеров данных, и наборов, определенных для определенного провайдера.

Распространенный

Следующие наборы характерны для всех провайдеров данных:

  • MetaDataCollections

  • DataSourceInformation

  • DataTypes

  • Ограничения

  • ReservedWords

Специфичный для провайдера

Следующее является наборами, в настоящий момент обеспеченными MySQL, Connector/Net, в дополнение к общим наборам выше:

  • Базы данных

  • Таблицы

  • Столбцы

  • Пользователи

  • Внешние ключи

  • IndexColumns

  • Индексирует

  • Столбцы Внешнего ключа

  • UDF

  • Представления

  • ViewColumns

  • Параметры процедуры

  • Процедуры

  • Триггеры

Пример кода

Список доступных наборов может быть получен, используя следующий код:

using System;using System.Data;using System.Text;using MySql.Data;using MySql.Data.MySqlClient;namespace ConsoleApplication2{    class Program    {        private static void DisplayData(System.Data.DataTable table)        {            foreach (System.Data.DataRow row in table.Rows)            {                foreach (System.Data.DataColumn col in table.Columns)                {                    Console.WriteLine("{0} = {1}", col.ColumnName, row[col]);                }                Console.WriteLine("============================");            }        }        static void Main(string[] args)        {            string connStr = "server=localhost;user=root;database=world;port=3306;password=******;";            MySqlConnection conn = new MySqlConnection(connStr);            try            {                Console.WriteLine("Connecting to MySQL...");                conn.Open();                DataTable table = conn.GetSchema("MetaDataCollections");                //DataTable table = conn.GetSchema("UDF");                DisplayData(table);                conn.Close();            }            catch (Exception ex)            {                Console.WriteLine(ex.ToString());            }            Console.WriteLine("Done.");        }    }}

Дополнительная информация о GetSchema() метод и наборы схемы могут быть найдены в документации Microsoft.NET.