Recuperar Campos da tabela

7 respostas
aeamorim

Olá pessal,

Estou pensando em fazer um esquema de busca dinamica, ou seja, o usuário irá informar o termo a ser pesquisado e escolher qual o campo da tabela deseja pesquisar, inclusive o esquema ja está ok, a minha unica dúvida é como popular o combobox com os nomes dos campos da tabela

alguém tem alguma idéia de como fz isso???

7 Respostas

A

Olá.

Todo banco de dados possui o chamado “catálogo” que são tabelas da estrutura interna do SGBD que descrevem as tabelas criadas para a aplicação. Só pra te dar um exemplo: no Oracle, um select na ALL_TAB_COLUMNS te retorna várias informações, dentre elas: nome da tabela, nome do campo, tipo de dado, dono da tabela… O lance é que cada SGBD possui seu próprio catálogo, então a variação vai estar aí. Lembrando ainda que para acessar esses catálogos pode ser necessário privilégios especiais dentro do banco. Considerando isso, talvez seja interessante você criar um modelo que mapeie as tabelas da aplicação e mostre para o usuário as coisas de um jeito mais transparente pra ele. Imagine por exemplo, no banco de dados várias tabelas terem um campo chamado NOM_CLI. Não ficaria mais bacana você traduzir pro usuário isso em algo como “Nome do Cliente” ??

aeamorim

ola ademilton, seria isto mesmo que eu preciso, e por coinsidencia estou usando o oracle, porém eu gostaria que vc me desse um exemplo mais detalhado já que sou iniciante tanto com o oracle como com desenvolvimento pra web

A

vc quer fazer algo dinâmico pra qualquer tabela e pra qualquer campo? se for, vc vai ter um belo dum trabalho, pois pra cada tipo de campo, vc vai ter que saber traduzir o valor inputado para o tipo esperado e saber montar sua query dinamica e fazer os setQueryFields ou algo parecedio.

é isso mesmo?

aeamorim

nao, pode ser para uma determinada tabela

coisa bem simples

eh soh pra o usuario escolher qual o campo que ele deseja pesquisar e o critério da pesquisa se eh like, = >= e assim por diante

A

Nesse caso então tá fácil de você resolver criando uma tabela sua onde você deixe pronto esse “mapeamento” das colunas. Eu penso numa estrutura assim: um campo para armazenar uma descrição que vá ser mostrada para o usuário e outro campo para armazenar o nome verdadeiro do campo da tabela no banco. A partir daí fica fácil… depois que o usuário selecionar um item no combo, você dá um select nessa tabela e recupera o nome verdadeiro do campo.
Existe até uma tabela default que se não me engano é criada na instalação do ORACLE que se presta muito bem a esse tipo de coisa: chama-se CG_REF_CODES. Verifica se você tem acesso a ela e pode deitar e rolar

P

Já tenho essa funcionalidade, fiz utilizando reflection do java.

aeamorim

tem como passar um exemplo?

Criado 13 de janeiro de 2011
Ultima resposta 17 de jan. de 2011
Respostas 7
Participantes 4