Estava fazendo uma integração de bases de dados MySQL e SQL Server e, em certa etapa, teria que utilizar o SqlDataSource para preencher um GridView alternando entre o SQL Server e o MySQL. Contudo, nativamente, o provider do SqlDataSource não aceita o MySQL a não ser por ODBC conforme especificação. Dei uma lida na net para ver alguns comentários e ví alguns absurdos como: "o SqlDataSource é específico do SQL Server" entre outros. Parece que o pessoal não lê as especificações. Como disse, dá sim, mas por ODBC. Mas usando o conector MySQL, conforme um post anterior, é possível realizar a integração do SqlDataSource a uma base MySQL sem ser por ODBC usando o conector específico. Vamos por a mão na massa...
Primeiramente vá no web.config e adicione as seguintes configurações:
<system.data>
<DbProviderFactories>
<add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description="Conector .NET para o MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.2.2.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
</DbProviderFactories>
</system.data>
Atente-se à versão da DLL do conector que está utilizando. No caso, estou usando a 6.2.2.0. Aplique também o Assembly inserindo a tag abaixo:
<add assembly="MySql.Data, Version=6.2.2.0, Culture=neutral, PublicKeyToken=C5687FC88969C44D" />
Como disse, não vou entrar em detalhes, mas adicionando essas configurações no web.config de seu projeto já estará apto para trabalhar adequadamente com o MySQL. Agora o resto é simples, basta inserir o SqlDataSource e colocar o ProviderName="MySql.Data.MySqlClient".
Obs: Não coloque nenhum driver no ConnectionString do SqlDataSource como "Driver=MySQL ODBC 3.5;" ou suas variantes. Utilize a string de conexão convencional, pois o provider irá fornecer informações específicas para que o objeto possa se conectar normalmente.
Mostrando postagens com marcador mysql. Mostrar todas as postagens
Mostrando postagens com marcador mysql. Mostrar todas as postagens
SqlDataSource e MySQL
Postado por
Thiago Marçal
on quinta-feira, 29 de abril de 2010
/
Marcadores:
dll,
mysql,
sqldatasource
/
Comments: (1)
ASP.NET com Banco MySQL
Postado por
Thiago Marçal
on quarta-feira, 28 de abril de 2010
/
Marcadores:
banco de dados,
dll,
mysql
/
Comments: (0)
Todos viram aqui que meus posts dispensam muito embasamento teórico e parte logo para a prática. Gosto de ser direto... então, vamos lá! Para conectar a bancos MySQL podemos utilizar o ODBC do .NET para conectar e realizar consultas a ele. Contudo, esse tipo de conexão é mais lento e não usurfrui de conjunto de instruções específicas que podem otimizar as operações sobre o banco de dados, exemplo o namespace System.Data.SqlClient no qual possuem instruções específicas do SQL Server para manipulações dos dados. Assim sendo, a própria MySQL disponibilizou um conector específico para programação .NET. Para isso, pode realizar o download aqui.
Faça o download do instalador ou zip para obtermos as DLLs. Caso tenham dificuldade na obtenção dos arquivos, vejam nesse link aqui onde contêm apenas as DLLs básicas para o funcionamento. Com os arquivos em mãos, insira-os na pasta Bin do projeto ou dê um Add Reference para incorporá-las. Com as DLLs no seu devido local, as classes MySQL já podem ser acessadas quando adicionado o namespace MySql.Data.MySqlClient. Abaixo, temos um exemplo de realizar uma consulta no banco de dados. Nota-se que se assemelha bastanto com o SqlDataReader, OdbcDataReader, etc:
using MySql.Data.MySqlClient;
MySqlConnection conexao = new MySqlConnection("String Conexão MySQL");
MySqlCommand comando = new MySqlCommand();
MySqlDataReader datareader = null;
try
{
conexao.Open();
try
{
comando.Connection = conexao;
comando.CommandText = "SELECT * FROM Tabela";
datareader = comando.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
}
catch (MySqlException erro) { }
}
catch (MySqlException erro) { }
O objeto MySqlDataReader contêm os dados da consulta efetuada. Bem similiar com as outras formas de uso de conexão, então não há erro. Parameters, DataSet e muitos métodos que o conector fornece podem ser usados de forma similar aos demais conectores citados anteriormente. Fácil...
Então é isso! Caso tenham dificuldade na string de conexão para o MySQL veja no ConnectionStrings a mais adequada a sua necessidade.
Faça o download do instalador ou zip para obtermos as DLLs. Caso tenham dificuldade na obtenção dos arquivos, vejam nesse link aqui onde contêm apenas as DLLs básicas para o funcionamento. Com os arquivos em mãos, insira-os na pasta Bin do projeto ou dê um Add Reference para incorporá-las. Com as DLLs no seu devido local, as classes MySQL já podem ser acessadas quando adicionado o namespace MySql.Data.MySqlClient. Abaixo, temos um exemplo de realizar uma consulta no banco de dados. Nota-se que se assemelha bastanto com o SqlDataReader, OdbcDataReader, etc:
using MySql.Data.MySqlClient;
MySqlConnection conexao = new MySqlConnection("String Conexão MySQL");
MySqlCommand comando = new MySqlCommand();
MySqlDataReader datareader = null;
try
{
conexao.Open();
try
{
comando.Connection = conexao;
comando.CommandText = "SELECT * FROM Tabela";
datareader = comando.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
}
catch (MySqlException erro) { }
}
catch (MySqlException erro) { }
O objeto MySqlDataReader contêm os dados da consulta efetuada. Bem similiar com as outras formas de uso de conexão, então não há erro. Parameters, DataSet e muitos métodos que o conector fornece podem ser usados de forma similar aos demais conectores citados anteriormente. Fácil...
Então é isso! Caso tenham dificuldade na string de conexão para o MySQL veja no ConnectionStrings a mais adequada a sua necessidade.