SqlDataSource e MySQL

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.

1 comentários:

Unknown disse...

não consegui

Postar um comentário