Acesso ao banco de dados

9 respostas
abelgomes

bom dia pessoal, é o seguinte, tenho uma consulta que vai se repetir varias vezes entao eu fiz assim

ResultSet rs = null;
		
		PreparedStatement 	pstmt 	= null;
		
		List<VOGrupoOrcamentario> retorno = new ArrayList<VOGrupoOrcamentario>();
		
		String sqlQuery = "SELECT * FROM GRUPOORCAMENTARIO WHERE ? = ?";

                        pstmt = con.prepareStatement(sqlQuery);			
			
			pstmt.setString(1, campo);
			pstmt.setString(2, item);

			rs = pstmt.executeQuery();

sendo que essas 2 ? na minha query um é o campo pelo qual vou psquisar e a outra é o valor, o problema é:
como eu to add um String no pstmt entao a query fica assim SELECT * FROM GRUPOORCAMENTARIO WHERE ‘campo’ = ‘valor’

e ae nao da em nada…

alguma ajuda?

vou ter que repetir esse metodo mudando apenas o campo?

9 Respostas

abelgomes

Adcionando…

nao to querendo fazer assim

String sqlQuery = "SELECT * FROM GRUPOORCAMENTARIO WHERE "+campo+" = ?";
Tiburcio_Mancha

naum, coloca o nome do campo que esta no banco:

assim:

String sqlQuery = “SELECT * FROM GRUPOORCAMENTARIO WHERE nome_campo_no_banco = ?”;

Tiburcio_Mancha

naum, coloca o nome do campo que esta no banco:

assim:

String sqlQuery = “SELECT * FROM GRUPOORCAMENTARIO WHERE nome_campo_no_banco = ?”;

abelgomes

pois é mas ai eu tenho 15 consultas para fazer que vai ser a mesma coisa

SELECT * FROM GRUPOORCAMENTARIO WHERE “+campo+” = ?";

mas so muda o nome do campo… nao vou fazer 15 metodos pra fazer isso…:wink: vou dararrajar uma maneira e posto aqui… :slight_smile:

jessetsilva

e se vc fizesse assim ?

public oqVcQuerRetornar suaFuncao (String nomeDocampo)
{

  ResultSet rs = null;   
  PreparedStatement   pstmt   = null;   
  List<VOGrupoOrcamentario> retorno = new ArrayList<VOGrupoOrcamentario>();   
  String sqlQuery = "SELECT * FROM GRUPOORCAMENTARIO WHERE "+nomeDocampo +" = ?";   
  
   pstmt = con.prepareStatement(sqlQuery);             
    pstmt.setString(2, item);   
  
    rs = pstmt.executeQuery();  

// aqui vc faz o resto pra retorno ou coisa ssim
// caso seja uma lista, vc pdoe fazer um for correndo a lista e colocando o que vc quer da lisat, e adicionando no select
}
Tiburcio_Mancha

desculpa, agora entendi...

o problema esta nas concatenações e uso das aspas, tenta assim:

[code]"SELECT * FROM GRUPOORCAMENTARIO WHERE '"+nomeDocampo +"' = ?";

primeiro abre aspas simples e depois a dupla...

Tiburcio_Mancha

Tiburcio_Mancha:
desculpa, agora entendi…

o problema esta nas concatenações e uso das aspas, tenta assim:

"SELECT * FROM GRUPOORCAMENTARIO WHERE '"+nomeDocampo +"' = ?";

primeiro abre aspas simples e depois a dupla…

rpb.cold

Amigo,

entendo que a unica forma de fazer é primeiro concatenar o campo na string e depois vc adicionar o valor pelo setString.

Exemplo:
ResultSet rs = null;     
PreparedStatement   pstmt   = null;     
List<VOGrupoOrcamentario> retorno = new ArrayList<VOGrupoOrcamentario>(); 

StringBuffer sql = new StringBuffer();

sql.append("SELECT * FROM GRUPOORCAMENTARIO WHERE ");
sql.append(campoDaTabela);
sql.append(" = ?");

pstmt = con.prepareStatement(sql.toString());               
pstmt.setString(1, valueSearch);     
try{    
rs = pstmt.executeQuery();    

while(rs.next){
    //iteracao para popular o list
}

}catch(Exception e){
  e.printStackTrace();
}

att,

Renan

abelgomes

é isso mesmo… :(…pensei que dava pra colocar o paramentro do pstmt…mas é isso mesmo Renan…

Criado 1 de dezembro de 2008
Ultima resposta 1 de dez. de 2008
Respostas 9
Participantes 4