Erro ao pegar dados do banco

9 respostas
S

Pessoal, blz?

entao, estou com um problema aki e nao sei onde esta o erro.
To tentando pegar uns dados do banco para inserir na minha JTable. Porem da um erro, e nao consigo achar o q esta errado
ai vai o codigo do metodo:

public void addlotes() {
		ResultSet lotes = null;
		try {
			lotes = con.prepareStatement("select refe from lotes").executeQuery();
			while (lotes.next()) {
				String lo = lotes.getString(1);
				System.out.println(lo);
			}
		}catch (SQLException a) {
			System.out.println(a);
		}
		
	}

essa tabela existe no banco, e inseri nela apenas uma linha para testar, mas da o seguinte erro:
java.lang.NullPointerException

alguem sabe me dizer o q tem de errado no metodo?

vlw

9 Respostas

jweibe

posta o erro completo…

S
java.lang.NullPointerException
	at View.BordadoU.addlotes(BordadoU.java:88)
	at View.BordadoU.<init>(BordadoU.java:81)
	at VerificarLogin.LoginSenha.abrir(LoginSenha.java:73)
	at VerificarLogin.LoginSenha.verifica(LoginSenha.java:49)
	at View.Login$2.actionPerformed(Login.java:90)
	at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
	at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
	at java.awt.Component.processMouseEvent(Unknown Source)
	at javax.swing.JComponent.processMouseEvent(Unknown Source)
	at java.awt.Component.processEvent(Unknown Source)
	at java.awt.Container.processEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Window.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)
verificando dados..
Jhoniboni

sunsite, possivelmente é algum problema com sua String de conexão com o banco de dados que não está funcionando, e por consequência o objeto “con” pode estar nulo e o prepareStatement não é encontrado em um objeto de conexão nulo, daí o erro. Faça um teste antes do prepareStatement para verificar se seu objeto de conexão está nulo e poste o resultado pra gente.

public void addlotes() { ResultSet lotes = null; try { if (con != null) { lotes = con.prepareStatement("select refe from lotes").executeQuery(); while (lotes.next()) { String lo = lotes.getString(1); System.out.println(lo); } } else { System.out.println("Objeto con nulo"); } }catch (SQLException a) { System.out.println(a); } }

S

jhoniboni, fiz o teste que vc postou e imprimiu isso:

Objeto con nulo

bem isso q vc falou entao…

mas n entendo, pq eu fiz uma classe conecta q conecta com o banco, se conectar abre outra classe q eh a tela de login, e fez verificacao com os dados no banco e se tudo estiver certom abre essa outra classe q tem esse metodo addlotes q eh para preencher um jtable da classe

Jhoniboni

Como você obteve esse objeto con ?
(se você utiliza a classe Conecta para isso, poste ela também)

S

jhoniboni, achei meu erro!
faltou um fazer um comando bobo q eu sempre me eskeco, dizer q essa conexao recebe aquela conexao:

this.con = con;

problema resolvido, agora puxo os dados do campo refe certinho do banco!

vlw pela ajuda

S

porem, me deparei com outra questao agora:
quando uso o comando q citei acima para pegar os itens do dado, o “select * from lotes”, se eu digitar esse comando no developer, ele me traz todos dados dessa tabela, certo? porem pelo eclipse, qdo eu faco esse comando:

try {
			lotes = con.prepareStatement("select * from lotes").executeQuery();
			while (lotes.next()) {
				String lo = lotes.getString(1);
				System.out.println(lo);
			}

ele so retorna o o dado do primeiro campo na base de dados, e nao tudo, o * como eu queria.
Minha duvida eh, vou ter q passar cada campo do banco em um lotes.getString() ?

ou tem um que pegue todos os dados ?

Jhoniboni

sunsite, se esse método existe eu não o conheço (dei uma olhada rápida na documentação e também não encontrei nada). Por outro lado, não consigo ver uma utilidade muito óbvia para ele existir…
Enfim, até onde sei você vai ter que pegar campo a campo sim.

S

jhoniboni, a utilidade dele no meu ponto de vista seria q com apenas um getString pegaria todos os valores daquela linha da tabela, poupando alguns comandos! Na minha tabela (to usando oracle 10g free) e tb usando o sql developer, tenho uns campos do tipo DATE, no sql developer qdo do um select nesse campo, ele me retorna a data certinho conforme eu dei no insert, agora qdo eu do um select pelo eclipse, ele me retorna diferente, retorna assim: 2011-07-16 00:00:00.0, ele inverto, coloca aaa/mm/dd em vez de dd/mm/aaaa como eu cadastrei no banco, e ainda por cima, retorna 00:00:00.0 q eu acredito q seja a hora…mas pq esta me retornando isso se eu n cadastrei isso no banco?

Criado 16 de julho de 2011
Ultima resposta 17 de jul. de 2011
Respostas 9
Participantes 3