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.
Pergunta
Corposemalma
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:
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: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!)
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
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.