Colocar Objeto no Banco de Dados

5 respostas
T

Bom dia, estou com uma duvida. Estou querendo jogar um objeto no banco de dados. Mas estou perdido, a baixo esta o codigo no qual estou usando.

Antes estava passando os atributos, mas agora passo o objeto inteiro, mas como devo deixar no banco de dados, para ele ser armazenado??

Banco de dados: MySql + Navicat
IDE: MyEclipse

Grato!

public Cliente incluirServico(Cliente cliente){
		
		Connection con = getConnection();
		PreparedStatement ps = null;
		
		try {
			ps = con.prepareStatement("insert into servico.cliente(nome, telefone, problema) values(?,?,?);");
			ps.setString(1,nome);
			ps.setString(2,telefone);
			ps.setString(3,problema);
			ps.execute();
			
		} catch (SQLException e) {
			e.printStackTrace();
		}finally{
			try {
				ps.close();
				con.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		return cliente;

	}

5 Respostas

W

Duas coisas que eu achei estranho

  1. public Cliente incluirServico(Cliente cliente);

Vc passa um objeto Cliente e o retorno eh o mesmo cliente ?? Esse metodo poderia ser void ou entao boolean true ou false pra indicar se o insert deu certo.

ps.setString(1,nome);

ps.setString(2,telefone);

ps.setString(3,problema);

nome, telefone e problema sao atributos do Objeto Cliente? Se sim, vc teria que prover getters e setters no seu Cliente, ai ficaria algo do tipo :

ps.setString(1,cliente.getNome());

ps.setString(2,cliente.getTelefone());

ps.setString(3,cliente.getProblema());

Do jeito que esta essas variaveis estao vindo de lugar nenhum. Vc tem que obte-las a partir desse objeto Cliente que vc ta passando no parametro.

//Daniel

T

Olá, orbigado pela ajuda.

Blz, era isso mesmo que eu estava precisando, mas ainda continuo com duvida, na linha:

ps = con.prepareStatement("insert into servico.cliente(nome, telefone, problema) values(?,?,?);");

Como estou recebendo um Objeto, eu mantenho no comando sql os atributos ou não?

=D

W

hummm, acho que nao precisa desse “servico.cliente” se a sua tabela chama “cliente” vc pode fazer :

ps = con.prepareStatement(“insert into cliente(nome, telefone, problema) values(?,?,?);”);

Tirando isso, deveria funcionar.

//Daniel

andreiribas

baixe a apostila de web da caelum e seja feliz:

se tiver dificuldades ainda baixe a do curso de java básico pra se aprofundar nos conceitos.

T

andreiribas, eu peguei varios pdf la na caelum, muito bom o material deles. Valeu!

windsofhell:
hummm, acho que nao precisa desse "servico.cliente" se a sua tabela chama "cliente" vc pode fazer :

ps = con.prepareStatement("insert into cliente(nome, telefone, problema) values(?,?,?);");

Tirando isso, deveria funcionar.

//Daniel

windsofhell, vê só, o erro que esta dando agora é outro, ele aponta para o metodo que uso para incluir no banco.

Estou trabalhando com EJB. Vê o que acontece:

javax.ejb.EJBException: java.lang.NullPointerException; nested exception is: java.lang.NullPointerException
java.lang.NullPointerException
[b]	at Cliente.ClienteSession.incluirServico(ClienteSession.java:39)[/b]

[b]	at Cliente.ClienteSessionBean.main(ClienteSessionBean.java:40)[/b]

A primeira linha em negrito, é a função ps.close(); no metodo incluiservico(cliente);

A segunda linha, e referente ao e.printStackTrace(); que fica dentro do catch que uso na main.

O erro só dar depois que click em ENTER, que seria o momento que pegar os atributos, cliente.set***, e joga no objeto, para entrar na função: inserirServico(cliente);

Será bronca com a conexao com a base de dados?

Criado 25 de abril de 2008
Ultima resposta 25 de abr. de 2008
Respostas 5
Participantes 3