Ir para conteúdo
Fórum Script Brasil
  • 0

SQL - Utilização de Parametros (Dicas)


Corposemalma

Pergunta

Uma curta + interessante:

Aee gente, pra quem não sabe do poder de SQL vamu lá agora!

O comum ao se trabalhar com SQL é que tenha-se sempre uma variavel definida pelo usuário final.... A maneira mais prática e menos trabalhosa de se fazer o mesmo (na minha opinião e de alguns outros usuários) é a utilização de parametros!

O comum de usuários iniciantes é colocar as variáveis dentro da própria setença de SQL, mas esse tipo de aproximação trás dois grandes problemas:

* O incontável número de "aspas" na sentença, dificultando a visualização, edição, aplimoramento e teste da mesma...

* Dificuldade de tratar tipos diferentes de variáveis (string, date, integer)

Exemplo comum:

Query.SQL.Add('SELECT * FROM tabela WHERE CampoNome = '''' + EditNome.text + '''' ')

Bem... nesse exemplo é facil visualizar tudinho... 
agora olhe o próximo:

Query.SQL.Add('SELECT Nome, Endereço, Idade FROM tabela WHERE CampoNome = ' + '''' + EditNome.text + '''' + ' AND Idade BETWEEN ' + StrtoInt(EditIdade1.text) + ' AND ' + StrtoInt(EditIdade2.text) + ' AND  Endereço LIKE ' + '''' + % + EditEdndereço.text + % + '''' + ' ORDER BY Nome')     
isso tudo acima é sou uma linha tá! Conseguiu ler algo ai no meio? Vai saber se falta alguma aspa HEHE, detalhe que se faltar, voce somente verá em tempo de execucao o erro, e mesmo assim não aponta exatamente, voce vai precisar voltar e revisar toda a sentença sozinho Mesma linha acima usando Parametros:
Quey.SQL.Add('SELECT Nome, Endereço, Idade FROM tabela WHERE Nome = :Nome AND Idade BETWEEN :idade1 AND :Idade2 AND Endereço LIKE :endereço ORDER BY Nome ') 
query.parambyname('nome').AsString := Editnome.text
query.parambyname('idade1').AsInteger := StrtoInt(Editidade1.text)
query.parambyname('idade2').AsInteger := StrtoInt(Editidade2.text)
query.parambyname('endereço').AsString := '%' + EditEndereço.text + '%'

Pooo mas deu mais linhas! Mais menos trabalho, olha a quantidade de aspas que foram poupadas!! Com certeza, agora se tiver que mexer é super fácil de achar....

Esse tipo de abordagem em SQL facilita bastante no tratamento de variaveis por deixa de obrigar a pessoa a usar as " aspas e fazer aquela zona... Além de ajudar tambem no tratamento de tipos diferentes de variaveis, tipo procurar por um numero em um campo string.

Aprenda a fazer! Quando tiver que enfrentar SQL cabulosas com pesquisas complexas (eu tinha uma que procurava: autor, cantor, musica, CD, entre datas, e genero musical, o usuário selecionava o que queria, ordenava por qualquer um dos itens, de forma crescente ou decrescente, resumindo: a sentença era totalmente maleavel... Imagina se tivesse colokado isso tudo em uma só sentença, cheia de aspas, sem usar nenhum parametro e no fim ver que precisa trocar um detalhe!)

Certamente a utilização de parâmetros em sql, além de dar limpeza na visualização do código, também dá uma certa flexibilização como esta:

Já tive problemas com parâmetros data; em um banco era .asDate, em outro era .asDateTime. Então o que eu fiz:

try

Query.Open ou Query.Execsql

except

// aqui eu mando p/ uma rotina que checa os parâmetros data

// faço um for de 0 a Params.Count-1 e vejo

// se o DataType for ftDate, altero p/ ftDateTime e vice-versa

// depois volto a dar

Query.Open ou Query.Execsql

end;

Se os parâmetros estivessem implícitos na sentença, eu não conseguiria.

Acho que a maioria utiliza implicitamente por não ter que escrever as linhas de atribuição de valores dos parâmetros.

Obs: Acho que na linha:

query.parambyname('endereço').AsString := % + EditEndereço.text + %

O % deve estar entre aspas. <- REALMENTE EU TINHA ESQUECIDO... HEHE

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...