Если вы не только работали в крупной компании, у вас обязательно будет возможность познакомиться с MySQL. Хотя он не поддерживает обработку транзакций и хранимые процедуры, предоставляемые им функции определенно удовлетворят большую часть ваших потребностей. , это лаконично. MySQL также имеет некоторые уникальные преимущества. В некоторых случаях его скорость даже выше, чем у больших баз данных.
Итак, как получить доступ к базе данных MySQL в .NET? Возможно, многие сразу скажут: «Используйте OLEDB», но на самом деле с помощью .NET OleDb Data Provider невозможно получить доступ к MySQL. Если вы его используете, система предложит вам: «Net Data OLE DB Provider (System.Data.Odbc) не имеет. Поддержка поставщика MSDASQL (поставщик Microsoft OLE DB для драйвера Odbc). По словам автора MySQLDriverCS, он был «заброшен владельцем».
К счастью, у нас есть другие варианты. Вот два способа доступа к базе данных MySQL.
Использование ODBC.NET
ODBC.NET (полное имя ODBC .NET Data Provider) — это бесплатный дополнительный компонент .NET Framework, который необходимо загрузить с веб-сайта Microsoft. Адрес загрузки: http://download.microsoft.com. /download/dasdk/Install/1.0.4030.0/W98NT42KMeXP/EN-US/odbc_net.msi , для которого требуется, чтобы в системе был установлен MDAC 2.7 или более поздней версии. Кроме того, вам также необходимо установить драйвер ODBC для MySQL. Адрес загрузки: http://www.mysql.com/downloads/api-myodbc-2.50.html . Вам также необходимо настроить DSN в «ODBC». Менеджер источников данных».
С точки зрения проектирования объектов ODBC.NET аналогичен OLEDB, SQL и т. д., а именно OdbcConnection, OdbcCommand, OdbcDataAdapter, OdbcDataReader. Использование точно такое же, если вы хотите использовать ODBC .NET для замены предыдущего OleDb. NET Data Provider, на самом деле вы можете полностью изменить свою программу путем поиска и замены.
Вот пример кода:
попробуйте
{
строка constr = "DSN=MySQL;" + "UID=;" +"PWD=";
conn = новый OdbcConnection (constr);
конн.Открыть();
строковый запрос = "вставить в test.dbtable значения10,'disksidkfsdi', 'asdfaf', 'adsfasdf')";
строка ТМП = ноль;
OdbcCommand cmd = новый OdbcCommand (запрос, соединение);
for(int я = 0; я <100000; я++)
{
cmd.ExecuteNonQuery();
}
cmd.Dispose();
конн.Закрыть();
query = "выбрать * из test.dbtable";
OdbcCommand cmd2 = newOdbcCommand (запрос, подключение);
конн.Открыть();
Читатель OdbcDataReader = cmd2.ExecuteReader();
пока (читатель.Читать())
{
tmp = читатель[0].ToString();
tmp = читатель[1].ToString();
tmp = читатель[2].ToString();
tmp = читатель[3].ToString();
}
конн.Закрыть();
запрос = «удалить из test.dbtable»;
OdbcCommand cmd3 = newOdbcCommand (запрос, соединение);
конн.Открыть();
cmd3.ExecuteNonQuery();
}
поймать (исключение ex)
{
MessageBox.Show(ex.Message);
}
окончательно
{
конн.Закрыть();
}
Любой, кто написал приложение базы данных на C#, должен знать, что приведенный выше код выполняет операции вставки и чтения данных сто тысяч раз и, наконец, удаляет все записи данных.
Большинство людей могут не знать об этом
при использовании MySQLDriverCS
. MySQLDriverCS — это бесплатный драйвер .NET с открытым исходным кодом для базы данных MySQL.Точно так же, как поставщик данных Sql .NET предназначен для сервера Sql, он специально разработан для MySQL и может называться поставщиком данных MySQL .NET. Для его использования нет необходимости настраивать дополнительный источник данных ODBC. По сути, если вы можете подключиться к MySQL, вы можете получить к нему доступ через MySQLDriverCS.
MySQLDriverCS — это проект на SourceForge.NET, но по неизвестной причине доступ к этому веб-сайту в Китае недоступен.
Ниже приведен пример кода с использованием MySQLDriverCS:
MySQLConnection conn = null;
пытаться
{
строка connstr = "Источник данных=MySQL;Пароль=root;Идентификатор пользователя=root;Location=localhost";
conn = новый MySQLConnection (constr);
конн.Открыть();
строковый запрос = «вставить в test.dbtable значения (10, 'disksidkfsdi', 'asdfaf', 'adsfasdf')»;
строка ТМП = ноль;
MySQLCommand cmd = новый MySQLCommand (запрос, соединение);
for(int я = 0; я <100000; я++)
{
cmd.ExecuteNonQuery();
}
cmd.Dispose();
конн.Закрыть();
query = "выбрать * из test.dbtable";
MySQLCommand cmd2 = новый MySQLCommand (запрос, соединение);
конн.Открыть();
Читатель MySQLDataReader = cmd2.ExecuteReaderEx();
пока (читатель.Читать())
{
tmp = читатель[0].ToString();
tmp = читатель[1].ToString();
tmp = читатель[2].ToString();
tmp = читатель[3].ToString();
}
конн.Закрыть();
запрос = «удалить из test.dbtable»;
MySQLCommand cmd3 = новый MySQLCommand (запрос, соединение);
конн.Открыть();
cmd3.ExecuteNonQuery();
}
поймать (исключение ex)
{
MessageBox.Show(ex.Message);
}
окончательно
{
конн.Закрыть();
}
Это почти то же самое, что и приведенный выше код. Разница в том, что Odbc стал MySQL. Кроме того, следует отметить, что метод команды ExecuteReader стал ExecuteReaderEx в MySQLDriverCS. О некоторых тонких различиях см. прикрепленный документ для ознакомления.
Тестирование производительности
Некоторые читатели уже поняли цель кода, который я написал выше. Кстати, цель на самом деле состоит в проведении тестирования производительности. Время выполнения двух приведенных выше фрагментов кода составляет: около 24 секунд для ODBC.NET и около 17 секунд для MySQLDriverCS. Результаты неудивительны, поскольку MySQLDriverCS является выделенным драйвером данных для MySQL, поэтому вполне разумно быть намного быстрее, чем ODBC.NET.
Резюме
В этой статье представлены два метода доступа к базе данных MySQL и проводится простой тест их производительности. Я надеюсь, что она может предоставить читателям ценную информацию при использовании базы данных MySQL для разработки приложений .NET.