Si no solo ha trabajado en una empresa de un grupo grande, definitivamente tendrá la oportunidad de entrar en contacto con MySQL. Aunque no admite el procesamiento de transacciones ni los procedimientos almacenados, las funciones que proporciona definitivamente satisfarán la mayoría de sus necesidades. En resumen, MySQL también tiene algunas ventajas únicas. En algunos casos, su velocidad es incluso más rápida que la de las bases de datos grandes.
Entonces, ¿cómo acceder a la base de datos MySQL en .NET? Tal vez muchas personas digan inmediatamente: use OLEDB, pero de hecho, usando .NET OleDb Data Provider no puede acceder a MySQL. Si lo usa, el sistema le preguntará: "Net Data OLE DB Provider (System.Data.Odbc) no. Compatible con el proveedor MSDASQL (proveedor Microsoft OLE DB para el controlador Odbc). Según el autor de MySQLDriverCS, fue "abandonado por el propietario".
Afortunadamente, tenemos otras opciones. Aquí hay dos formas de acceder a la base de datos MySQL.
Uso de ODBC.NET
ODBC.NET (nombre completo ODBC .NET Data Provider) es un componente complementario gratuito de .NET Framework que debe descargarse del sitio web de Microsoft. La dirección de descarga es: http://download.microsoft.com. /download/dasdk/Install/1.0.4030.0/W98NT42KMeXP/EN-US/odbc_net.msi , que requiere que el sistema tenga instalado MDAC 2.7 o superior. Además, también necesita instalar el controlador ODBC para MySQL. La dirección de descarga es: http://www.mysql.com/downloads/api-myodbc-2.50.html . También necesita configurar el DSN en el archivo "ODBC. Administrador de fuentes de datos".
En términos de diseño de objetos, ODBC.NET es lo mismo que OLEDB, SQL, etc., es decir, OdbcConnection, OdbcCommand, OdbcDataAdapter, OdbcDataReader. Si desea utilizar ODBC .NET para reemplazar el OleDb anterior. NET Data Provider, de hecho, puede modificar completamente su programa buscando y reemplazando.
Aquí hay un código de ejemplo:
prueba
{
cadena constr = "DSN=MySQL;" + "UID=;" +"PWD=";
conexión = nueva OdbcConnection(constr);
conexión.Open();
consulta de cadena = "insertar en test.dbtable valores10, 'disksidkfsdi', 'asdfaf', 'adsfasdf')";
cadena tmp = nulo;
OdbcCommand cmd = nuevo OdbcCommand(consulta, conexión);
para(int i = 0; i < 100000; i++)
{
cmd.ExecuteNonQuery();
}
cmd.Dispose();
conexión.Cerrar();
consulta = "seleccionar * de test.dbtable";
OdbcCommand cmd2 = newOdbcCommand(consulta, conexión);
conexión.Open();
Lector OdbcDataReader = cmd2.ExecuteReader();
mientras (lector.Leer())
{
tmp = lector[0].ToString();
tmp = lector[1].ToString();
tmp = lector[2].ToString();
tmp = lector[3].ToString();
}
conexión.Cerrar();
consulta = "eliminar de test.dbtable";
OdbcCommand cmd3 = newOdbcCommand(consulta, conexión);
conexión.Open();
cmd3.ExecuteNonQuery();
}
captura (Excepción ex)
{
MessageBox.Show(ex.Mensaje);
}
finalmente
{
conexión.Cerrar();
}
Cualquiera que haya escrito una aplicación de base de datos en C# debe saber que el código anterior realiza operaciones de inserción y lectura de datos cien mil veces y finalmente elimina todos los registros de datos.
Es posible que la mayoría de las personas no sepan esto
cuando usan MySQLDriverCS
. MySQLDriverCS es un controlador .NET gratuito y de código abierto para la base de datos MySQL.Al igual que Sql .NET Data Provider es para Sql Server, está especialmente diseñado para MySQL y puede llamarse MySQL .NET Data Provider. No es necesario configurar una fuente de datos ODBC adicional para usarlo. Básicamente, siempre que pueda conectarse a MySQL, puede acceder a él a través de MySQLDriverCS.
MySQLDriverCS es un proyecto en SourceForge.NET, pero por alguna razón desconocida, no se puede acceder a este sitio web en China.
El siguiente es un ejemplo de código que utiliza MySQLDriverCS:
MySQLConnection conn = null;
intentar
{
string connstr = "Fuente de datos=MySQL;Contraseña=root;ID de usuario=root;Ubicación=localhost";
conexión = nueva MySQLConnection(constr);
conexión.Open();
consulta de cadena = "insertar en test.dbtable valores (10, 'disksidkfsdi', 'asdfaf', 'adsfasdf')";
cadena tmp = nulo;
MySQLCommand cmd = nuevo MySQLCommand(consulta, conexión);
para(int i = 0; i < 100000; i++)
{
cmd.ExecuteNonQuery();
}
cmd.Dispose();
conexión.Cerrar();
consulta = "seleccionar * de test.dbtable";
MySQLCommand cmd2 = nuevo MySQLCommand(consulta, conexión);
conexión.Open();
Lector MySQLDataReader = cmd2.ExecuteReaderEx();
mientras (lector.Leer())
{
tmp = lector[0].ToString();
tmp = lector[1].ToString();
tmp = lector[2].ToString();
tmp = lector[3].ToString();
}
conexión.Cerrar();
consulta = "eliminar de test.dbtable";
MySQLCommand cmd3 = nuevo MySQLCommand(consulta, conexión);
conexión.Open();
cmd3.ExecuteNonQuery();
}
captura (Excepción ex)
{
MessageBox.Show(ex.Mensaje);
}
finalmente
{
conexión.Cerrar();
}
Es casi exactamente igual que el código anterior. La diferencia es que Odbc se ha convertido en MySQL. Además, una cosa a tener en cuenta es que el método ExecuteReader de Command se ha convertido en ExecuteReaderEx en MySQLDriverCS. documento adjunto para más detalles.
Pruebas de rendimiento
Algunos lectores han visto el propósito del código que escribí anteriormente. Por cierto, el propósito es en realidad realizar pruebas de rendimiento. El tiempo de ejecución de los dos códigos anteriores es: aproximadamente 24 segundos para ODBC.NET y aproximadamente 17 segundos para MySQLDriverCS. Los resultados no son sorprendentes. Como controlador de datos dedicado para MySQL, es razonable que MySQLDriverCS sea mucho más rápido que ODBC.NET.
Resumen
Este artículo presenta dos métodos de acceso a la base de datos MySQL y realiza una prueba simple de su rendimiento. Espero que pueda proporcionar a los lectores una referencia valiosa al usar la base de datos MySQL para desarrollar aplicaciones .NET.