| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/06/2005 13:33:35
|
Luiz Henrique Coura
Java Ninja
![[Avatar]](/images/avatar/d9b1655c134b831076d6c45620a78c33.jpg)
Membro desde: 28/04/2004 21:03:05
Mensagens: 283
Localização: Lorena-SP
Offline
|
ae Pessoal!
Estou utilizando PreparedStatement para fazer minhas queries no banco, porém eu preciso fazer uma query um pouco mais "inteligente".
Tenho umas tabelas no banco q tem praticamente a mesma estrutura onde a única coisa de diferente é o nome.
Como eu faço, se tiver como, para fazer uma query utilizando essa estrutura?
Reparem q o nome da tabela eu tb mascarei.
Valew!
|
"A única pergunta estúpida é aquela que você nunca faz"
Anônimo
Luiz Henrique Coura |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/06/2005 13:56:04
|
ZehOliveira
GUJ Ranger
Membro desde: 12/12/2003 22:13:49
Mensagens: 964
Localização: Maceio-AL
Offline
|
Não sei se alguém aqui tem alguma carta na manga pra esse tipo de coisa. Mas eu sempre fiz "na mão" mesmo esse tipo de coisa, e não vejo outro modo de fazer.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/06/2005 14:07:55
|
Mauricio Linhares
Moderador
![[Avatar]](/images/avatar/97af07a14cacba681feacf3012730892.jpg)
Membro desde: 09/01/2005 23:28:22
Mensagens: 3717
Localização: João Pessoa, Paraíba - Brasil
Offline
|
Luiz Henrique Coura wrote:ae Pessoal!
Estou utilizando PreparedStatement para fazer minhas queries no banco, porém eu preciso fazer uma query um pouco mais "inteligente".
Tenho umas tabelas no banco q tem praticamente a mesma estrutura onde a única coisa de diferente é o nome.
Como eu faço, se tiver como, para fazer uma query utilizando essa estrutura?
Reparem q o nome da tabela eu tb mascarei.
Valew!
Você já tentou isso e não funcionou?
|
Meu blog sobre desenvolvimento | My Last.fm | @mauriciojr
Screencast de Introdução a linguagem Objective-C |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/06/2005 14:24:48
|
ZehOliveira
GUJ Ranger
Membro desde: 12/12/2003 22:13:49
Mensagens: 964
Localização: Maceio-AL
Offline
|
Com certeza isso não funciona, Maurício.
Até pela própria natureza de bind variables, que são usadas para que o banco de dados mantenha um plano de acesso para consultas iguais com parametros diferentes.
É impossível (pelo menos no meu entendimento da coisa) bindar o nome de uma tabela.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/06/2005 14:27:53
|
Mauricio Linhares
Moderador
![[Avatar]](/images/avatar/97af07a14cacba681feacf3012730892.jpg)
Membro desde: 09/01/2005 23:28:22
Mensagens: 3717
Localização: João Pessoa, Paraíba - Brasil
Offline
|
Eu sei lá como é que o driver JDBC faz isso, quem sabe num funciona, só sabe tentando
This message was edited 1 time. Last update was at 24/06/2005 14:28:11
|
Meu blog sobre desenvolvimento | My Last.fm | @mauriciojr
Screencast de Introdução a linguagem Objective-C |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/06/2005 14:31:19
|
Luiz Henrique Coura
Java Ninja
![[Avatar]](/images/avatar/d9b1655c134b831076d6c45620a78c33.jpg)
Membro desde: 28/04/2004 21:03:05
Mensagens: 283
Localização: Lorena-SP
Offline
|
São parâmetros q vem direto da linha de comando. Preciso deixar isso bem protegido. O usuário vai passar os parâmetros e os resultados serão armazenados em arquivos.
Qd tento isso direto, ele acusa erro:
Esse é o trecho do código:
This message was edited 1 time. Last update was at 24/06/2005 14:37:11
|
"A única pergunta estúpida é aquela que você nunca faz"
Anônimo
Luiz Henrique Coura |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/06/2005 14:33:10
|
ZehOliveira
GUJ Ranger
Membro desde: 12/12/2003 22:13:49
Mensagens: 964
Localização: Maceio-AL
Offline
|
Quem vai reclamar não é driver JDBC, até pq ele não tem inteligência pra dizer se a query tá certa ou errada. Quem vai reclamar é o banco de dados mesmo, dizendo que não pode bindar (alguém tem uma tradução melhor pra isso?) a variável.
No Oracle eu sei que não funciona. Pode ser que em outros SGDBs, que não usem bind variables, funcione. Enfim...
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/06/2005 14:36:28
|
Mauricio Linhares
Moderador
![[Avatar]](/images/avatar/97af07a14cacba681feacf3012730892.jpg)
Membro desde: 09/01/2005 23:28:22
Mensagens: 3717
Localização: João Pessoa, Paraíba - Brasil
Offline
|
Ah é, quando ele vê que o objeto é um string ele dá um setString e faz o escape do String. Bem que o ZehOliveira falou
Mas se você souber o nome de todas as tabelas que são assim, ou pelo menos tiver como saber o nome de todas elas quando a aplicação iniciar, inicializa todos os prepared statements e mantém um Map ou uma collection qualquer com eles, assim quando você precisar, é só ir lá no map e pegar denovo
|
Meu blog sobre desenvolvimento | My Last.fm | @mauriciojr
Screencast de Introdução a linguagem Objective-C |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/06/2005 14:39:18
|
Kleber Santos
JavaChild
![[Avatar]](/images/avatar/55fd1368113e5a675e868c5653a7bb9e.jpg)
Membro desde: 17/06/2005 12:05:13
Mensagens: 116
Localização: Guarulhos - São Paulo
Offline
|
SELECT * FROM ? WHERE status=?
não seria algo assim?
SELECT ? FROM ? WHERE ?
onde "?" seriam parametros a passar?
|
Ateu, Graças a Deus. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/06/2005 14:39:45
|
ZehOliveira
GUJ Ranger
Membro desde: 12/12/2003 22:13:49
Mensagens: 964
Localização: Maceio-AL
Offline
|
Qd tento isso direto, ele acusa erro:
Acho que o MySQL se encaixa no exemplo de SGDBs que eu citei acima.
Quando você faz:
Ao invés de ser gerado: "SELECT *FROM tabela ..."
Ele gera: "SELECT * FROM 'tabela' ..."
(Veja bem, isso no caso do driver do MySQL. Pode ser que ele passasse as consulta com ? para o banco e deixasse o trabalho de bindagem com o banco de dados.)
Creio que o erro venha daí. Mas, nome de tabela não é pra ser passado como bind variable, mas sim como literal. Você deve fornecer uma query válida já com o nome da tabela e setar somente as variáveis.
Continuo batendo na tecla de fazer na mão. Tomando as devidas precauções, já que o dado vem de uma fonte não confiável (usuário).
This message was edited 3 times. Last update was at 24/06/2005 14:44:12
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/06/2005 14:48:30
|
Luiz Henrique Coura
Java Ninja
![[Avatar]](/images/avatar/d9b1655c134b831076d6c45620a78c33.jpg)
Membro desde: 28/04/2004 21:03:05
Mensagens: 283
Localização: Lorena-SP
Offline
|
Utilizo MySQL e ele acusou esse erro.
Pensei nessa solução do Maurício. O problema é q terei q ficar adicionando uma query nova para cada tabela nova q entrar.
Estou pensando em fazer filtrar os parâmetros passados pelo o usuário.
Zeh, gostaria de ler mais sobre bind variables, enfim, sobre essa característica do banco. Onde consigo encontrar?
|
"A única pergunta estúpida é aquela que você nunca faz"
Anônimo
Luiz Henrique Coura |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/06/2005 14:50:59
|
Mauricio Linhares
Moderador
![[Avatar]](/images/avatar/97af07a14cacba681feacf3012730892.jpg)
Membro desde: 09/01/2005 23:28:22
Mensagens: 3717
Localização: João Pessoa, Paraíba - Brasil
Offline
|
Luiz Henrique Coura wrote:Utilizo MySQL e ele acusou esse erro.
Pensei nessa solução do Maurício. O problema é q terei q ficar adicionando uma query nova para cada tabela nova q entrar.
Estou pensando em fazer filtrar os parâmetros passados pelo o usuário.
Zeh, gostaria de ler mais sobre bind variables, enfim, sobre essa característica do banco. Onde consigo encontrar?
Use Hibernate
Use Hibernate
Use Hibernate
Use Hibernate
Use Hibernate
E bind variables é o que você faz quando dá um setQualquerCoisa() num prepared statement, você está "ligando" ou "posicionando" variáveis dentro da sua query.
Mas...
Use Hibernate
Use Hibernate
Use Hibernate
|
Meu blog sobre desenvolvimento | My Last.fm | @mauriciojr
Screencast de Introdução a linguagem Objective-C |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/06/2005 14:51:10
|
Kleber Santos
JavaChild
![[Avatar]](/images/avatar/55fd1368113e5a675e868c5653a7bb9e.jpg)
Membro desde: 17/06/2005 12:05:13
Mensagens: 116
Localização: Guarulhos - São Paulo
Offline
|
Tomando as devidas precauções, já que o dado vem de uma fonte não confiável (usuário)
ZehOliveira, mas vc conseguiu resolver? e isso?
|
Ateu, Graças a Deus. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/06/2005 14:51:56
|
Kleber Santos
JavaChild
![[Avatar]](/images/avatar/55fd1368113e5a675e868c5653a7bb9e.jpg)
Membro desde: 17/06/2005 12:05:13
Mensagens: 116
Localização: Guarulhos - São Paulo
Offline
|
desculpa, não é ZehOliveira
Luiz Henrique Coura
|
Ateu, Graças a Deus. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/06/2005 15:02:45
|
ZehOliveira
GUJ Ranger
Membro desde: 12/12/2003 22:13:49
Mensagens: 964
Localização: Maceio-AL
Offline
|
Estou pensando em fazer filtrar os parâmetros passados pelo o usuário.
Seja simples. Do it.
Zeh, gostaria de ler mais sobre bind variables, enfim, sobre essa característica do banco. Onde consigo encontrar?
Um link interessante sobre o assunto é http://www.mhavila.com.br/topicos/bd/sqlbind.html
Procurando por bind variables no Google você vai achar muita, muita coisa mesmo!
|
|
|
 |
|
|