Arquivo Técnico

Dica de Mysql com .NET connector - problemas em GetSchemaTable().


Se houver problema de valores ou nomes de coluna que tiverem acentos serem retornados distorcidos, basta executar estas duas querys logo que abre a conexão.

SET character_set_results=latin1

SET NAMES latin1

Desta forma você força o servidor a responder com carateres extendidos latin1.

Nota: é preciso que o banco também tenha sido criado como latin1.

Nota2: também funciona se tudo, tanto as querys quanto o banco, forem utf8:

SET character_set_results=utf8

SET NAMES utf8

Pelo que achei na net, existe (ou existia, conforme a versão), um bug no conector do mysql nativo do .net que não sabia tratar os retornos de nomes das tabelas criadas com alias com acento ou caracteres extendidos (exemplo Descrição) - algo a ver com conversão de UTF-8 e ASCII. Isto ocorre especificamente quando você abre um DataReader ou DataSet com uma tabela, e dá um GetSchemaTable() para ver a estrutura. Neste caso descrição viria algo como descri§%o.


Este documento ou artigo pode ser utilizado livremente sem qualquer restrição, salvo se tal utilização viole direitos de terceiros. Caso algum direito de terceiros esteja sendo violado pelo mesmo, avise-nos imediatamente que corrigiremos o erro. Favor citar a fonte.