Acesso ao banco de dados

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?

Adcionando…

nao to querendo fazer assim

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

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

assim:

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

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

assim:

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

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:

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
} 

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…

[quote=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…[/quote]

Amigo,

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

Exemplo:

[code]
ResultSet rs = null;
PreparedStatement pstmt = null;
List retorno = new ArrayList();

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();
}[/code]

att,

Renan

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