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…
vou dararrajar uma maneira e posto aqui… 
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…