MySQL no Delphi 2007
Esses dias andei experimentando usar o Delphi 2007 para acessar bancos de dados MySQL, o que me fez lembrar muito da notória frase de Henry Ford no início do século XX: “Qualquer cliente pode ter um carro de qualquer cor que deseje, desde que seja preta”.
Descobri que se pode usar componentes dbExpress para acessar qualquer banco de dados MySQL que deseje no Delphi 2007, desde que seja um banco de dados da versão 5.0 do MySQL.
Por mais natural que pareça que funcione a versão estável mais recente, no caso a 5.1 (eu não digo nem a 6.0, em alpha-release), não adianta que não funciona. Tentei ainda usar o driver dbExpress que vem no recém-lançado Delphi 2009 e o resultado foi o mesmo. Só quando eu desinstalei o MySQL 5.1 e instalei o MySQL 5.0 na máquina deu certo. Rápido e fácil como era de se esperar da dupla dinâmica MySQL e dbExpress.
Aparentemente, manter compatibilidade entre versões da libmySQL.dll não é uma grande preocupação para a Sun. Se serve de algum consolo, percebi incompatibilidade similar na versão mais recente do driver de MySQL para Ruby on Rails. O driver 2.7.3 funciona bem com MySQL 5.0, mas falha com o MySQL 5.1 ao gerar comandos simples como “SHOW TABLES”.
Nada justifica, no entanto, os erros catastróficos que o Delphi exibe quando falha em abrir uma query usando a DLL cliente do MySQL 5.1. Primeiro aparece uma mensagem de erro “Commands out of sync; you can’t run this command now”. Até aí tudo bem, é uma mensagem do próprio MySQL - quer dizer, não está tudo bem, mas é compreensível. Só que a partir da segunda tentativa de abrir o dataset já é mostrada uma apavorante mensagem de “Access Violation” na IDE do Delphi.
A qualidade do design do DBX 4 é excelente. Ainda assim, como não é possível controlar a qualidade dos drivers e DLLs cliente de terceiros, seria importante dedicar mais atenção ao tratamento de erros nas interfaces para não da margem a esse tipo de instabilidade.
No caso específico do MySQL acho importante a CodeGear correr para tornar os seus drivers compatíveis com as versões mais recentes, porque existem por aí em produção bancos de dados MySQL de todas as versões e simplesmente dizer que a culpa é da Sun não vale.
Delphi Prism Video
Assista aqui a um rápido preview de 3:24″ do Delphi Prism rodando no Visual Studio 2008 (em inglês), gravado por
Delphi Prism no Visual Studio .NET
Agora é oficial: ontem foi anunciada a próxima versão do Delphi for .NET, que se chamará Delphi Prism e será lançada até dezembro no CodeGear RAD Studio 2009. Ao invés da IDE do RAD Studio, funcionará como um plug-in de linguagem do Microsoft Visual Studio. O Delphi Prism é baseado na tecnologia Oxygene licenciada da RemObjects, como já havia sido comentado por de Erick Sasse no início do mês.
Resumindo as informações que já se tem do Delphi Prism:
- Adeus VCL.NET - já vai tarde.
- A linguagem traz recursos avançados como nullable types e “future” types, generics, sequences e query expressions (LINQ)
- Funcionará com as tecnologias WPF, Silverlight, ASP.NET and LINQ
- ADO.NET e ASP.NET providers baseados em dbExpress
- DataSnap cliente, para conectar servidores DataSnap feitos em Win32
- BlackFish SQL database
- Precisará do .NET Framework 3.5 para rodar o VisualStudio
- Produz executáveis compatíveis com qualquer versão do .NET Framework a partir da 1.1
- Produz executáveis compatíveis com o framework .NET Mono, para Linux e Mac
- Onde já tem Visual Studio instalado será apenas adicionado o plug-in de linguagem ao sistema
- Onde não tem Visual Studio este será instalado apenas com a linguagem Delphi Prism (sem C# e VB)
- Não será preciso adquirir uma nova licença do Visual Studio
- Ainda não é possível desenvolver aplicativos .NET Compact Framework. A culpa não é da CodeGear, mas da Microsoft, que fez o CF fechado para as linguagens dela e não ao CLR
- A CodeGear/Embarcadero e a RemObjects são parceiros comerciais. Uma não comprou, nem vai comprar a outra
- O linguagem em si continuará a cargo da equipe de compiladores da RemObjects
