[RESOLVIDO]Erro de sintaxe em classe DAO

7 respostas
erickles

Ola pessoal!

Não entendo pq o sclipse acusa erro no codigo abaixo:

package dados;
import java.sql.*;

public class cliente {

	private Connection connection;
	
	public cliente() throws SQLException throws SQLException{
		this.connection = ConnectionFactory.getConnection();
	}

	public void adiciona(Cliente cli)  {

		PreparedStatement stmt = this.connection.prepareStatement("insert into cliente (codcli,nomecli,curvaabc,cidade,estado,situcredito,valorcre,calorgar) values (?, ?, ?, ?, ?, ?, ?, ?)");

		stmt.setString(1,cli.getCodcli());
		stmt.setString(2,cli.getNomecli());
		stmt.setString(3,cli.getCurvaABC());
		stmt.setString(4,cli.getCidade());
		stmt.setString(5,cli.getEstado());
		stmt.setString(6,cli.getsituCredito());
		stmt.setString(7,cli.getValorCre());
		stmt.setString(8,cli.getValorGar());
		
		stmt.execute();
		stmt.close();
		
	}
	
}

Vcs veem algo de estranho? Acredito que não haja nada, ou esse eclipse tah ficando louco...

7 Respostas

rafaelglauber
  1. Qual é o erro acusado?
  2. Cadê esses atributos na sua classe que vc tá passando para o insert(codcli por exemplo)???
  3. Vai usar ActiveRecord mesmo???
erickles
  1. Nas duas ultimas chaves:
  • Syntax error on token “}” , delete this token;
    Na definição da variavel connection:
  • syntax error, insert “}” to complete class body;
    Na definição do construtor e chave que fecha o mesmo:
  • Syntax error on tokens, delete these tokens.
  1. codcli foi nefinido em outra classe de outro pacote, onde todos os atributos possuem seus respectivos getters e setters;(import negocios.*:wink:

  2. Vou sim, sei que seria idela aprender hibernate, mas preciso aprender isso pra depois partir pro hibernate…

rafaelglauber
public cliente() throws SQLException throws SQLException

substitua para

public cliente() throws SQLException

você tem uma classe Cliente e outra cliente??? Chama essa com a letra minuscula de ClienteDAO pelo menos, pois é ela que faz a persistencia…É a classe Cliente que chama esse metodo adiciona? Pois ActiveRecord é caracterizado quando seu dominio tem contato direto com os mecanismos de persistencia, se vc tiver um Service fazendo isso tá tranquilo.

erickles

Bem, renomeei a “cliente” para “ClienteDAO”.
A classe “Cliente” no caso, preenchera os atributos atraves da classe Scanner, que por sua vez, chamara o metodo adiciona da classe “ClienteDAO” para gravar no Banco. To fazendo uns eskema parecido com MVC.

erickles

O Problema é nesse trecho de código:

public void adiciona(Cliente cli){
		
		PreparedStatement stmt = this.connection.prepareStatement("insert into cliente (codcli,nomecli,curvaabc,cidade,estado,situcredito,valorcre,calorgar) values (?, ?, ?, ?, ?, ?, ?, ?);");

		stmt.setString(1,cli.getCodcli());
		stmt.setString(2,cli.getNomecli());
		stmt.setString(3,cli.getCurvaABC());
		stmt.setString(4,cli.getCidade());
		stmt.setString(5,cli.getEstado());
		stmt.setString(6,cli.getsituCredito());
		stmt.setString(7,cli.getValorCre());
		stmt.setString(8,cli.getValorGar());
		
		stmt.execute();
		stmt.close();
		
	}

Vejam os erros que deram:

Exception in thread "main" java.lang.Error: Unresolved compilation problems: 
	PreparedStatement.connection cannot be resolved
	Syntax error on tokens, delete these tokens
	stmt cannot be resolved
	The method getCodcli() is undefined for the type Cliente
	stmt cannot be resolved
	The method getNomecli() is undefined for the type Cliente
	stmt cannot be resolved
	stmt cannot be resolved
	stmt cannot be resolved
	stmt cannot be resolved
	The method getsituCredito() is undefined for the type Cliente
	stmt cannot be resolved
	The method getValorCre() is undefined for the type Cliente
	stmt cannot be resolved
	The method getValorGar() is undefined for the type Cliente
	stmt cannot be resolved
	stmt cannot be resolved

A PreparedStatement eu tenho que dar um implements ?

rafaelglauber
The method getCodcli() is undefined for the type Cliente

Bem o erro é claro, verifica essa sua classe Cliente que tá faltando coisa ou você esqueceu que Java é case sensitive.

qualquer dúvida posta o sua classe Cliente.

erickles

POutz cara, eh msm, na verdade, ontem msm, de ler sua resposta, jah havia detectado o problema. O Estranho msm foi a preparedstatement. Ao inves disso:

PreparedStatement stmt = this.connection.prepareStatement("insert into cliente values (?, ?, ?, ?, ?, ?, ?, ?);");

Tive que faze isso:

PreparedStatement stmt;

stmt = this.connection.prepareStatement("insert into cliente values (?, ?, ?, ?, ?, ?, ?, ?);");

Dae o eclipse n acuso erro. Pra mim, ambos os codigos dao na msma, mas vai entende...

Criado 6 de julho de 2008
Ultima resposta 7 de jul. de 2008
Respostas 7
Participantes 2