Se você não trabalhou apenas em uma empresa de um grande grupo, com certeza terá a oportunidade de entrar em contato com o MySQL. Embora ele não suporte processamento de transações e procedimentos armazenados, as funções que ele oferece certamente atenderão à maioria das suas necessidades. , é conciso O MySQL também tem algumas vantagens exclusivas. Em alguns casos, sua velocidade é ainda mais rápida do que a de grandes bancos de dados.
Então, como acessar o banco de dados MySQL em .NET? Talvez muitas pessoas digam imediatamente: Use OLEDB, mas na verdade, usando .NET OleDb Data Provider não pode acessar o MySQL. Se você usá-lo, o sistema irá perguntar: "Net Data OLE DB Provider (System.Data.Odbc) não. Suporte ao provedor MSDASQL (provedor Microsoft OLE DB para driver Odbc, não sei por que). Segundo o autor do MySQLDriverCS, foi "abandonado pelo proprietário".
Felizmente, temos outras opções. Aqui estão duas maneiras de acessar o banco de dados MySQL.
Usando ODBC.NET
ODBC.NET (nome completo ODBC .NET Data Provider) é um componente complementar gratuito do .NET Framework que precisa ser baixado do site da Microsoft. O endereço de download é: http://download.microsoft.com. /download/ dasdk/Install/1.0.4030.0/W98NT42KMeXP/EN-US/odbc_net.msi , que requer que o sistema tenha o MDAC 2.7 ou superior instalado. Além disso, você também precisa instalar o driver ODBC para MySQL. O endereço de download é: http://www.mysql.com/downloads/api-myodbc-2.50.html . Você também precisa configurar o DSN no "ODBC. Gerenciador de fonte de dados".
Em termos de design de objeto, ODBC.NET é o mesmo que OLEDB, SQL, etc., ou seja, OdbcConnection, OdbcCommand, OdbcDataAdapter, OdbcDataReader O uso é exatamente o mesmo se você quiser usar ODBC .NET para substituir o OleDb anterior. NET Data Provider, na verdade, você pode modificar completamente seu programa pesquisando e substituindo.
Aqui está um exemplo de código:
tente
{
string const = "DSN=MySQL;" + "UID=;" +"PWD=";
conexão = new OdbcConnection(constr);
conexão.Open();
string query = "inserir em test.dbtable valores10,'disksidkfsdi', 'asdfaf', 'adsfasdf')";
string tmp = nulo;
OdbcCommand cmd = new OdbcCommand(query, conn);
for(int i = 0; i < 100000; i++)
{
cmd.ExecuteNonQuery();
}
cmd.Dispose();
conexão.Fechar();
query = "selecione * em test.dbtable";
OdbcCommand cmd2 = newOdbcCommand(query, conn);
conexão.Open();
Leitor OdbcDataReader = cmd2.ExecuteReader();
while(leitor.Leitura())
{
tmp = leitor[0].ToString();
tmp = leitor[1].ToString();
tmp = leitor[2].ToString();
tmp = leitor[3].ToString();
}
conexão.Fechar();
query = "excluir de test.dbtable";
OdbcCommand cmd3 = newOdbcCommand(query, conn);
conexão.Open();
cmd3.ExecuteNonQuery();
}
catch(Exceção ex)
{
MessageBox.Show(ex.Mensagem);
}
finalmente
{
conexão.Fechar();
}
Qualquer pessoa que tenha escrito uma aplicação de banco de dados em C# deve saber que o código acima realiza operações de inserção e leitura de dados cem mil vezes e, por fim, exclui todos os registros de dados.
A maioria das pessoas pode não saber disso
ao usar MySQLDriverCS
. MySQLDriverCS é um driver .NET gratuito e de código aberto para o banco de dados MySQL.Assim como o Sql .NET Data Provider é para o Sql Server, ele foi especialmente projetado para MySQL e pode ser chamado de MySQL .NET Data Provider. Não há necessidade de configurar uma fonte de dados ODBC adicional para usá-lo. Basicamente, desde que você possa se conectar ao MySQL, você pode acessá-lo através do MySQLDriverCS.
MySQLDriverCS é um projeto no SourceForge.NET, mas por alguma razão desconhecida, este site não pode ser acessado na China.
A seguir está um exemplo de código usando MySQLDriverCS:
MySQLConnection conn = null;
tentar
{
string connstr = "Fonte de dados=MySQL;Senha=root;ID do usuário=root;Local=localhost";
conexão = new MySQLConnection(constr);
conexão.Open();
string query = "inserir em valores test.dbtable (10, 'disksidkfsdi', 'asdfaf', 'adsfasdf')";
string tmp = nulo;
MySQLCommand cmd = novo MySQLCommand(query, conn);
for(int i = 0; i < 100000; i++)
{
cmd.ExecuteNonQuery();
}
cmd.Dispose();
conexão.Fechar();
query = "selecione * em test.dbtable";
MySQLCommand cmd2 = novo MySQLCommand(query, conn);
conexão.Open();
Leitor MySQLDataReader = cmd2.ExecuteReaderEx();
while(leitor.Leitura())
{
tmp = leitor[0].ToString();
tmp = leitor[1].ToString();
tmp = leitor[2].ToString();
tmp = leitor[3].ToString();
}
conexão.Fechar();
query = "excluir de test.dbtable";
MySQLCommand cmd3 = novo MySQLCommand(query, conn);
conexão.Open();
cmd3.ExecuteNonQuery();
}
catch(Exceção ex)
{
MessageBox.Show(ex.Mensagem);
}
finalmente
{
conexão.Fechar();
}
É quase exatamente igual ao código acima. A diferença é que Odbc se tornou MySQL. Além disso, uma coisa a notar é que o método ExecuteReader do Command se tornou ExecuteReaderEx no MySQLDriverCS. documento anexo para introdução detalhada.
Teste de desempenho
Alguns leitores realmente viram o propósito do código que escrevi acima. A propósito, o objetivo é realmente realizar testes de desempenho. O tempo de execução dos dois trechos de código acima é: cerca de 24 segundos para ODBC.NET e cerca de 17 segundos para MySQLDriverCS. Os resultados não são surpreendentes. Como um driver de dados dedicado para MySQL, é razoável que o MySQLDriverCS seja muito mais rápido que o ODBC.NET.
Resumo
Este artigo apresenta dois métodos de acesso ao banco de dados MySQL e realiza um teste simples de seu desempenho. Espero que ele possa fornecer aos leitores uma referência valiosa ao usar o banco de dados MySQL para desenvolver aplicativos .NET.