Duvida Com ResultSet

16 respostas
colored

Então to um sisteminha de busca aki, e eu to kerendo fazer um negocio assim qdo o usuario clicar no botao de busca por nome talz, isso pode retornar mais q 1 Funcionario ai eu keria um Jlabel que me informasse tipo 1 Funcionario de 3 Retornados…
Certo…

Alguem tem ideia como eu pego isso do resultset?

16 Respostas

jessetsilva

não consegui entender a pergunta hehe

yorgan

bom, você pode utilizar um sql assim:

String SQL = "select count(nome) as nr, nome from suaTabela where nome = ? group by nome";
//Depois você pega no resultset o nr de repetições o o nome que retornar.
rs.getInt("nr");
rs.getString("nome");

Era +/- isso que precisava?

[]´s

colored

Então eu Pensei mais o menos isso…
mas eu preciso fazer isso dentro de uma outra consulta entende?

Tipo eu um select lah like pa…
retorno
Paulo
Patricia
Paula
Paola

Certo.

Ai dentro desse select q eu kero mostrar 1 Funcionario de 4 Retornados…
Deu Pra entender x)?

yorgan

Dai eu não vejo sentido de usar um jLabel…pois se você informar 2 letras e tiverem 10 resultados, como você vai determinar qual o que vai ser exibido. Tudo bem que você pode dizer “vai ser o primeiro por ordem alfabetica”, mas como o usuário vai saber qual ele quer? Eu sugiro então que utilize ao invés do jLabel um comboBox, ou quando quando o resultset trouxer mais de um resultado, você salte um jpanel com uma lista e o usuário clica no nome que ele estava buscando.

[]´s

T

pode usar o metodo getRow() da classe ResulSet que te retorna um int dizendo em qual linha da consulta realizada no banco vc esta
e fazer um select count para saber quantos registros retornaram

T

acho q ficaria legal um Jframe com um JLabel mostrando o registro atual e dois JButton com funcoes proximo e anterior ai vc pode colocar 1 de x ou de 2 de x , etc

sendo o registro atual determinado pelo getRow e o total por um select count

colored

Yorgan Label Foi a primeiro coisa q veio na cabeça dps eu penso num jeito melhor kkkk…

thiago.
Tipo eh do getrow eu vi mesmo.
mas o problema eh q eu tenho q tipo fazer 1 select dentro de um resultado de outro select

colored

Thiago eh assim mesmo q vai funcionario…
os botoes < > >> << tao funfando jah…

so falta esse detalhezinho para mostrar qtos registros foram retornandos e em qual ele esta

yorgan

e não pode ser um contador dentro do seu while?
tipo:

int nr = 0;
while(rs.next()) {
    rs.getString("nome");
    nr++;
}
colored

Eu Pensei nisso tb, mas n sei como eu fiz mas meu metodo de retornar os dados n tem nenhum laço kkkk.

olha soh
public void TrazerDados(){
		try{
			String sql = null;
			if(radio1.isSelected()){
				sql = "Select * From Funcionario where Fun_Nome like ? order by fun_nome";
				ps = c.prepareStatement(sql, ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
				ps.setString(1, txtBusca.getText().toUpperCase() + "%");
				}
			
				else if(radio2.isSelected()){
					sql = "Select * From Funcionario where Fun_Cpf = ? order by fun_nome";
					ps = c.prepareStatement(sql, ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
			    	ps.setString(1, txtBusca.getText().toUpperCase());	
				}
				
			    	rs = ps.executeQuery();
			    	rs.last();
			    	ultimo = (int) rs.getLong("fun_id");
			    	rs.first();
			    	primeiro = (int) rs.getLong("fun_id");
			    	atualizaCampos();
			    	DesTravado();
			}
			    	catch (SQLException e) {
			    	       JOptionPane.showMessageDialog(null,"Funcionario não Encontrado!", "Nenhum Resultado Retornado Na Busca",1);
			    	       LimparCampos();
			    	       Travado();
			    	       return;
			    	}
		}
T

ve se isso ajuda

pode usar tb o union na query como neste exemplo

ou pode usar o getrow de novo no fim loop da select , usar o last pra te levar ao ultimo registro

colored

Hum tipo assim…

eu precisaria d dois resultados nas querys e nao um soh…

tipo eu faço o select da busca normal, e desse select fazer o select com o count…

pq o normal eu preciso setar nos campos e do count apenas pra saber qtos pioes a busca retornou…

T

da uma olhada neste metodo getMaxrows() da classe Statement

colored

Isso ai eh so pra obter o nº maximo q vc ker no Statement…

Tipo vc seta antes e dps se kiser saber qtos ai vc chama esse metodo.

T

Acho q se fizer rs.getStatement().getMaxRows(); sem setar um valor maximo para o statement traz o valor maximo que existe ou seja o que o ResultSet trouxe

ou pode depois do last() que usou como ja esta na ultima linha pegar o numero dela com o getRow()

colored

Ah fiz um eskeminha aki…
joguei 1 while mesmo la no meio do metodo dps q ele executa pra joga numa variavel pra mim x)…

Criado 14 de julho de 2008
Ultima resposta 16 de jul. de 2008
Respostas 16
Participantes 4