Consultas no BD

10 respostas
A

querendo saber o campo NOME da minha tablea, fiz a seguinte consulta:

String sql = "SELECT * FROM registros WHERE nome=’ "+ nome.getText() + " ’ ";

ótimo… maté aew tudo bem… pelo menos obtive o resultado esperado quando digito o nome tal qual foi registrado…
mas como eu deve proceder pra fazer uma consulta digitando apenas parte do nome?

Obrigado.
[]'s Alberto Ivo

10 Respostas

A

cara tb sou iniciante, mais fiz assim:

… WHERE (table.nome Like ’ “+nome.getText()+” %’)")

Acho que ajuda…

A

Isso resolve parte do problema. Se você estiver procurando um “josé da silva” e digitar josé esse método vai achar. Agora, pra encontrar o “josé manoel da silva”, procurando por manoel, o correto vai ser:

A

Só para complementar:

Se quiseres procurar por nomes a começar por ‘m’:

Select * from registos where nome like 'm%';

Nomes a acabar em m:

select * from registos where nome like '%m';

Nomes que contenham m:

select * from registos where nome like '%m%'
A

Pessoal, muito obrigado… foi de grande ajuda…
mas acabou gerando outra dúvida… agora de swing (eu acho)
por exemplo… se tem nomes como Manoel Silva, jose Silva e ijadiSilvaasdqwe
quando faço a consulta pelo nome SILVA… como eh para aparecer no formulário no swing… apenas aparece um deles… alguém tem algum idéia de como eu teria que fazer pra aparecer todos eles?

obrigado!

A

Nesse formulario onde estas a colocar os dados?
Se é mais do que um, é conveniente utilizar um jtable, ou um jlist

R

faça com que seu metodo de busca do BD guarde os resultados em um arraylist e depois coloque em uma JTable ou algo parecido jtable ficaria bom pois voce pode colocar uns eventos para qnd clicar ir para outro lugar etc…

M
Pessoal, peguei o exemplo que vocês passaram acima mas estou tendo dificuldade. Estou usando o NetBeans e fiz o seguinte comando.
public void proc()
      {
       String parte ="Select * from cliente where nome like '"+jTextField33.getText()+ "%'";
       try
       {
            stmt.executeQuery(parte);  
            jTextField34.setText(rs.getString("Nome");

       }
       catch(SQLException e)
       {
           
       }
 }
Ai eu criei um botão e no evento mouseClicked coloquei o seguinte.
private void jButton11MouseClicked(java.awt.event.MouseEvent evt)                                       
    {                                           
    proc();
    }

Mas não aparece nada e dá o seguinte erro.

java.lang.NullPointerException

at com.mysql.jdbc.ResultSet.findColumn(ResultSet.java:933)

at com.mysql.jdbc.ResultSet.getString(ResultSet.java:4755)

at Clientes.proc(Clientes.java:302)

at Clientes.jButton11MouseClicked(Clientes.java:845)

at Clientes.access$300(Clientes.java:6)

at Clientes$3.mouseClicked(Clientes.java:656)

at java.awt.AWTEventMulticaster.mouseClicked(AWTEventMulticaster.java:212)

at java.awt.Component.processMouseEvent(Component.java:5103)

at java.awt.Component.processEvent(Component.java:4897)

at java.awt.Container.processEvent(Container.java:1569)

at java.awt.Component.dispatchEventImpl(Component.java:3615)

at java.awt.Container.dispatchEventImpl(Container.java:1627)

at java.awt.Component.dispatchEvent(Component.java:3477)

at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:3483)

at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3207)

at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3128)

at java.awt.Container.dispatchEventImpl(Container.java:1613)

at java.awt.Window.dispatchEventImpl(Window.java:1606)

at java.awt.Component.dispatchEvent(Component.java:3477)

at java.awt.EventQueue.dispatchEvent(EventQueue.java:480)

at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:201)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:145)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:137)

at java.awt.EventDispatchThread.run(EventDispatchThread.java:100)

BUILD SUCCESSFUL (total time: 21 seconds)

O que está errado? (Sou novato em JAVA)

A

mude essa linha:

stmt.executeQuery(parte);

para ficar assim:

rs = stmt.executeQuery(parte);

e essa outra linha:

Veja: o método executeQuery( sua consulta ) retorna um ResultSet. Desse ResultSet - que no seu código você deve ter declarado fora do teu método proc() como rs - você usa os métodos gets… pra obter o valor de cada coluna. Observe que há um método get para cada tipo de dado retornado: tem getString(), getInt(), e por aí vai. Usar getString() pra qualquer coluna pode te dar alguma surpresa na conversão dos dados.

Tem uma outra coisa, nessa linha:

No caso, “Nome” é mesmo uma coluna da tabela que você está lendo? Esse campo está definido exatamente dessa forma na tabela? Manuais de JDBC mencionam que é melhor se referir às colunas pelo seu nº de posição. Assim, se “Nome” for a terceira coluna que é retornada nesse teu select, seria mais apropriado escrever essa linha assim:

Sucesso aí!!

M

Fiz o que você aconselhou. Parou de dar o erro mas não está mudando o texto do jTextField.
Eu estou tomando cuidado ao usar o método get, para ver se é String ou Integer, etc.

Porque será que não mostra o texto no jTextField?

A

Teve mesmo alguma coisa que faltou mencionar. Depois de passar o retorno do método executeQuery() para o ResultSet, precisa verificar se tem linhas nesse ResultSet. Pode fazer isso assim:

while( rs.next() )
{
   seuJTextField.setText(rs.getString(posição do campo no select));
}

Mas… se você tiver mais de uma linha retornando na consulta, o ideal mesmo é jogar o resultado num jTable.

Criado 7 de agosto de 2006
Ultima resposta 12 de ago. de 2006
Respostas 10
Participantes 6