Wenn Sie nicht nur in einem großen Konzernunternehmen gearbeitet haben, haben Sie auf jeden Fall die Möglichkeit, mit MySQL in Kontakt zu kommen. Obwohl es die Transaktionsverarbeitung und gespeicherten Prozeduren nicht unterstützt, werden die von ihm bereitgestellten Funktionen auf jeden Fall die meisten Ihrer Anforderungen erfüllen , es ist prägnant MySQL hat auch einige einzigartige Vorteile. In einigen Fällen ist seine Geschwindigkeit sogar schneller als die großer Datenbanken.
Wie greife ich in .NET auf die MySQL-Datenbank zu? Vielleicht werden viele Leute sofort sagen: „Verwenden Sie OLEDB“, aber tatsächlich kann der .NET OleDb-Datenanbieter nicht auf MySQL zugreifen. Wenn Sie ihn verwenden, werden Sie vom System gefragt: „Net Data OLE DB Provider (System.Data.Odbc) funktioniert nicht.“ Unterstützen Sie den MSDASQL-Anbieter (Microsoft OLE DB-Anbieter für Odbc-Treiber). Laut dem Autor von MySQLDriverCS wurde es „vom Besitzer aufgegeben“.
Glücklicherweise haben wir andere Möglichkeiten, auf die MySQL-Datenbank zuzugreifen.
Verwendung von ODBC.NET
ODBC.NET (vollständiger Name ODBC .NET Data Provider) ist eine kostenlose .NET Framework-Zusatzkomponente, die von der Microsoft-Website heruntergeladen werden muss: http://download.microsoft.com /download/ dasdk/Install/1.0.4030.0/W98NT42KMeXP/EN-US/odbc_net.msi , was erfordert, dass auf dem System MDAC 2.7 oder höher installiert ist. Darüber hinaus müssen Sie auch den ODBC-Treiber für MySQL installieren. Die Download-Adresse lautet: http://www.mysql.com/downloads/api-myodbc-2.50.html . Sie müssen auch den DSN im „ODBC“ konfigurieren Datenquellenmanager“.
In Bezug auf das Objektdesign ist ODBC.NET dasselbe wie OLEDB, SQL usw., nämlich OdbcConnection, OdbcCommand, OdbcDataAdapter, OdbcDataReader. Die Verwendung ist genau die gleiche, wenn Sie ODBC .NET verwenden möchten, um das vorherige OleDb zu ersetzen. NET-Datenanbieter, tatsächlich können Sie Ihr Programm durch Suchen und Ersetzen vollständig ändern.
Hier ist ein Beispielcode:
try
{
string constr = "DSN=MySQL;" + "UID=;"
conn = new OdbcConnection(constr);
conn.Open();
string query = "in test.dbtable Werte10,'disksidkfsdi', 'asdfaf', 'adsfasdf') einfügen";
string tmp = null;
OdbcCommand cmd = new OdbcCommand(query, conn);
for(int i = 0; i < 100000; i++)
{
cmd.ExecuteNonQuery();
}
cmd.Dispose();
conn.Close();
query = "select * from test.dbtable";
OdbcCommand cmd2 = newOdbcCommand(query, conn);
conn.Open();
OdbcDataReader reader = cmd2.ExecuteReader();
while(reader.Read())
{
tmp = Reader[0].ToString();
tmp = Reader[1].ToString();
tmp = Reader[2].ToString();
tmp = Reader[3].ToString();
}
conn.Close();
query = "aus test.dbtable löschen";
OdbcCommand cmd3 = newOdbcCommand(query, conn);
conn.Open();
cmd3.ExecuteNonQuery();
}
Catch (Ausnahme ex)
{
MessageBox.Show(ex.Message);
}
Endlich
{
conn.Close();
}
Jeder, der eine Datenbankanwendung in C# geschrieben hat, muss wissen, dass der obige Code hunderttausend Mal Operationen zum Einfügen und Lesen von Daten ausführt und schließlich alle Datensätze löscht.
Die meisten Leute wissen dies möglicherweise nicht,
wenn sie MySQLDriverCS verwenden
. MySQLDriverCS ist ein kostenloser und Open-Source-.NET-Treiber für die MySQL-Datenbank.Genau wie Sql .NET Data Provider für Sql Server ist es speziell für MySQL konzipiert und kann als MySQL .NET Data Provider bezeichnet werden. Es ist nicht erforderlich, eine zusätzliche ODBC-Datenquelle einzurichten, um es zu verwenden. Grundsätzlich können Sie über MySQLDriverCS darauf zugreifen, solange Sie eine Verbindung zu MySQL herstellen können.
MySQLDriverCS ist ein Projekt auf SourceForge.NET, aber aus unbekannten Gründen kann auf diese Website in China nicht zugegriffen werden.
Das Folgende ist ein Codebeispiel mit MySQLDriverCS:
MySQLConnection conn = null;
versuchen
{
string connstr = "Data Source=MySQL;Password=root;User ID=root;Location=localhost";
conn = new MySQLConnection(constr);
conn.Open();
string query = "in test.dbtable value(10, 'disksidkfsdi', 'asdfaf', 'adsfasdf') einfügen";
string tmp = null;
MySQLCommand cmd = new MySQLCommand(query, conn);
for(int i = 0; i < 100000; i++)
{
cmd.ExecuteNonQuery();
}
cmd.Dispose();
conn.Close();
query = "select * from test.dbtable";
MySQLCommand cmd2 = new MySQLCommand(query, conn);
conn.Open();
MySQLDataReader read = cmd2.ExecuteReaderEx();
while(reader.Read())
{
tmp = Reader[0].ToString();
tmp = Reader[1].ToString();
tmp = Reader[2].ToString();
tmp = Reader[3].ToString();
}
conn.Close();
query = "aus test.dbtable löschen";
MySQLCommand cmd3 = new MySQLCommand(query, conn);
conn.Open();
cmd3.ExecuteNonQuery();
}
Catch (Ausnahme ex)
{
MessageBox.Show(ex.Message);
}
Endlich
{
conn.Close();
}
Es ist fast genau das Gleiche wie der obige Code. Der Unterschied besteht darin, dass Odbc zu MySQL geworden ist. Darüber hinaus ist zu beachten, dass die ExecuteReader-Methode in MySQLDriverCS zu ExecuteReaderEx geworden ist Einzelheiten finden Sie im beigefügten Dokument.
Leistungstests
Einige Leser haben tatsächlich den Zweck des Codes erkannt, den ich oben geschrieben habe. Der Zweck besteht übrigens tatsächlich darin, Leistungstests durchzuführen. Die Ausführungszeit der beiden oben genannten Codeteile beträgt: etwa 24 Sekunden für ODBC.NET und etwa 17 Sekunden für MySQLDriverCS. Die Ergebnisse sind nicht überraschend. Als dedizierter Datentreiber für MySQL ist es sinnvoll, dass MySQLDriverCS viel schneller ist als ODBC.NET.
Zusammenfassung
Dieser Artikel stellt zwei MySQL-Datenbankzugriffsmethoden vor und führt einen einfachen Test ihrer Leistung durch. Ich hoffe, dass er den Lesern eine wertvolle Referenz bei der Verwendung von MySQL-Datenbanken zur Entwicklung von .NET-Anwendungen bieten kann.