C# Работа с MySql. Подключение, запросы

Сегодня мы поговорим о MySql. СУБД, которую поддерживает почти любой хостер. А конкретно о том, как подключиться к подобной базе данных и работать с ней.

Для начала нужно скачать официальный коннектор для работы с базами данных MySql на платформе .NET. Для этого переходим по этой ссылке.

dotnet_mysql1

 

Начинаем установку. Тут, в принципе, всё просто. Подводные камни (а также всякие панельки-браузеры) отсутствуют.  В составе библиотеки для C#, VBasic, документация и прочее.

dotnet_mysql2

Теперь, когда всё установлено, нам нужно подключить библиотеку к проекту. По умолчанию при установки библиотеки распаковываются в «C:\Program Files (x86)\MySQL\MySQL Connector Net 6.9.5\Assemblies\v4.5». Добавляем в References «MySql.Data.dll».

После чего можно объявить:

Теперь самое главное — подключение к базе данных:

Вся информация (адрес для доступа к СУБД, имя пользователя, пароль, порт) есть у хостера. Эту информацию можно найти в личном кабинете, или запросить к ней доступ у техподдержки.

Многие хостеры требуют дополнительной защиты по IP. То есть нужно в настройках вашего аккаунта добавить свой IP в список «безопасных» адресов. Иначе ничего не получится.

В любом случае я крайне не рекомендую использовать код, представленный выше, в клиентских приложениях (то есть в виде программ-«.exe»), которые будут распространяться в интернете/продаваться. Дело в том, что с помощью дизасемблера можно вытащить подобную информацию из приложения. А это значит, что злоумышленник сможет получить доступ к вашей базе данных.

Выходов из ситуации много. Из первого, что пришло в голову:

1) Можно для каждого клиента выделять в СУБД отдельную базу данных и отдельного пользователя. Если даже злоумышленник получит информацию для доступа — он сможет получить данные только касающиеся его аккаунта. Из минусов данного пункта: неудобно, сложно, отдельные манипуляции для каждого нового пользователя.

2) На мой взгляд верный способ — написать на PHP/ASP.Net скрипт-прослойку, которая будет принимать запросы и выдавать данные обратно, например в том же формате JSON. В данном случае всё, что сможет получить злоумышленник — это адрес скрипта и понять структуру запрашиваемых данных. Напрямую программа с СУБД уже не взаимодействует. Но есть угроза того, что зная как запрашивать данные и зная адрес скрипта — злоумышленник получит доступ к чужой информации. Для защиты от этого можно проверять логин-пароль при запросе в скрипте для конкретного пользователя.

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

 

bicycle

3 комментария для “C# Работа с MySql. Подключение, запросы”

  1. Подводные камни всегда есть. ))) Некоторые программы являются 32-х битными, а другие 64-х битными. Целый рабочий день провозился с коллегой, когда выясняли причину, почему у него работает, а у меня нет — Он поставил себе 64-х битную версию драйвера, а я нет.

    1. Administrator

      На самом деле действительно бывают такие ситуации, когда библиотека может быть зависима от разрядности.
      Поэтому в случае, если Вы используете подобные зависимости стоит запретить выполнение Вашего приложения на неподдерживаемой платформе.
      В целом — я уже давно не встречал установленных 32-х битных систем на компьютерах. В последнее время это стало большой редкостью, поэтому может быть достаточно просто использовать 64-битные библиотеки.
      Однако, если Ваше приложение не для внутреннего/личного пользования — лучше всё же добавить проверку.
      Конечный пользователь не станет разбираться в деталях, он просто удалит приложение/напишет отрицательный отзыв/позвонит в техподдержку.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *