Um dos maiores problemas em desenvolver algo na Internet é trocar de linguagem de programação e Banco de Dados.

Especificamente em Banco de Dados, não estou dizendo o sentido de “migrar” bases entre servidores, mas sim você estar acostumado trabalhar com o Microsoft SQL Server, descobrir que aquela empresa onde você hospedou seu site não trabalha com Ms. SQL (um pouco ruim), mas sim TRABALHAR com Ms. SQL e descobrir que seu acesso é muito lento (pior ainda!), às vezes, o servidor caía.

Passei por isso recentemente, desenvolvendo as consultas SQL com suas devidas instruções, em todo o site, tudo bonitinho. De repente, o site começou a ficar fora do ar, as consultas lentas. Onde estava o erro, afinal?

Como estou utilizando o Ms. IE 7.0, um site quando apresenta erro, o navegador interpreta algo do tipo “A PÁGINA NÃO PODE SER EXIBIDA”. E agora? Abri o FireFox (apesar de mostrar os erros, eu não curto muito sua interface quadrada), e lá estava o erro! As ConnectionString não achava o servidor ou dava timeout.

Parti então para o MySQL. Não sei se todos passaram por este problema. Com o Ms. SQL Server, eu tenho o QueryAnalizer. E com o MySQL, eu tenho aquela telinha de Prompt do Windows 3.11? Até entrar no Google e achar um bom programa para criar as queryes SQL em interface gráfica e amigável, acabei desitindo do MySQL. E o servidor continua caindo!

Voltei a procurar um programa pra fazer as Queryes em MySQL. É o MySQL Front… Agora eu parto para o MySQL de verdade, e esquecendo de vez o Ms. SQL.

Fiquei então feliz em criar um único Include com uma String de Conexão, criar uma base MySQL, e só apontar para outro servidor de dados. Foi puro engano! Imagine você programar TODO o site utilizando regras de um Banco de Dados, que o outro Banco não possui.

Com isso vieram os problemas:

  • Não havia TOP 1, TOP 5, TOP 6, TOP 7, TOP 10, TOP “Qualquer coisa”;
  • O MySQL não interpreta o comando WITH(NOLOCK);
  • Aspas duplas então, nem se fala! Tinha que ficar convertendo em 
  • SET IDENTITY_INSERT TABELA ON;
  • SET IDENTITY_INSERT TABELA OFF;
  • INT IDENTITY PRIMARY KEY;
  • O comando recordCount retornava sempre “-1”, e não conseguia montar o resultado da consulta em um vetor.

E com os problemas, busquei aqui, busquei ali, até achar em alguns Fóruns, e passar uma noite mudando tudo o que é consulta! Talvez isso sirva de exemplo pra alguém que já passou por isso. Antes de migrar de plataformas de Banco de Dados, faça testes, procure um bom programa que faça queryes SQL com interface gráfica, pesquise se os mesmos são rápidos…

Logo em seguida, algumas diferenças entre o Banco da Dados Ms. SQL Server e o MySQL.

Em Ms. SQL Server

 CREATE TABLE TABELA(
CHAVE_PRIMARIA INT IDENTITY PRIMARY KEY,
NOME VARCHAR,
CHAVE_ESTRAGEIRA INT FOREIGN KEY REFERENCES TABELA2 (PK)
)SET IDENTITY_INSERT TABELA ON
INSERT INTO TABELA (CHAVE_PRIMARIA, NOME, CHAVE_ESTRANGEIRA) VALUES (2, ‘Fulano’,3)
SED IDENTITY_INSERT TABELA OFFSELECT TOP 5 * FROM TABELAPra fazer paginação, requer alguns comandos a mais

objRecordset.Open, strSQL, objconexao, 3

O 3 já se trata do parâmetro cursorLocation

Em MySQL…

 CREATE TABLE TABELA(
CHAVE_PRIMARIA INT AUTO_INCREMENT,
NOME VARCHAR,
CHAVE_ESTRANGEIRA INT,
PRIMARY KEY (CHAVE_PRIMARIA),
FOREIGN KEY (CHAVE_ESTRANGEIRA) REFERENCES TABELA2 (PK)
)INSERT INTO TABELA (CHAVE_PRIMARIA, NOME, CHAVE_ESTRANGEIRA) VALUES (2, ‘Fulano’,3)
*Não requer IDENTITY_INSERT ON e OFF, porém é possível DESORGANIZAR a base mais fácilSELECT * FROM TABELA LIMIT 0,5Muito bom pra fazer paginação

objRecordset.Open, strSQL, objconexao, 3

O 3 já se trata do parâmetro cursorLocation

RecordCount: Comando para contar quantos registros há. Pode-se substituir por COUNT(*) diretamente no comando SQL, mas sempre irá trazer em TODAS as linhas o valor, às vezes desnecessário. Se o parâmetro cursorLocation não for declarado, o resultado Recordset sempre será -1.

~\\|//~
 -(o o)- RODRIGO SILVA
Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s