Problemas com Swing

Galera, depois de um bom tempo sem mecher com swing, mais ou menos 2 anos, estou precisando de uma ajudinha…

meu problema:

Não consigo gerar uma serial pra o meu id, usando o jdbc… ei o código:

[code]public void criaTabelaSManutencao() {

	ConexaoBD conBD = ConexaoBD.getInstancia();
	Connection conn = conBD.getConexao();
	Statement stmt;
	StringBuffer string = new StringBuffer();
	string.append("create table manutencao (");
	string.append("cod_manutencao integer primary key, ");
	string.append("cod_cliente   integer, ");
	string.append("cod_funcionario   integer, ");
	string.append("defeito    varchar(50), ");
	string.append("analista   varchar(20), ");
	string.append("status     varchar(20), ");
	string.append("data       varchar(10), ");
	
	try {
		stmt = conn.createStatement();
		stmt.execute(string.toString());
	} catch (SQLException e) {
		e.printStackTrace();
	} finally {
		conBD.desconectar();
	}

}

public void insereSManutencao(Manutencao smanutencao) {
	ConexaoBD conBD = ConexaoBD.getInstancia();
	Connection conn = conBD.getConexao();
	PreparedStatement stmt;
	try {
		stmt = conn.prepareStatement("insert into smanutencao values(?,?,?,?,?,?,?)");
		stmt.setInt(1, smanutencao.getCod_manutencao());
		stmt.setInt(2, smanutencao.getCod_cliente());
		stmt.setInt(3, smanutencao.getCod_funcionario());
		stmt.setString(4, smanutencao.getDefeito());
		stmt.setString(5, smanutencao.getAnalista());
		stmt.setString(6, smanutencao.getStatus());
		stmt.setString(7, smanutencao.getDataPrevisao());
		stmt.execute();
	} catch (SQLException e) {
		e.printStackTrace();
	} finally {
		conBD.desconectar();
	}
}[/code]

Minha classe.java

[code]public class Manutencao{

private int cod_manutencao;
private int cod_cliente;
private int cod_funcionario;
private String defeito;
private String analista;
private String status;
private String dataPrevisao;

//Demais codigos…[/code]

exatamente nesta linha:

eu sei que eu poderia alterar e colocar comente serial primary key… porem quando eu vou tentar inserir o valor, ele da pau… ele fala que o “cod_manutencao” tem que ser integer… alguem poderia me ajudar a relembrar isso?

Só por via das dúvidas, estou colocando ai o meu método de inserir tambem…

public void insereSManutencao(Manutencao smanutencao) { ConexaoBD conBD = ConexaoBD.getInstancia(); Connection conn = conBD.getConexao(); PreparedStatement stmt; try { stmt = conn.prepareStatement("insert into smanutencao values(?,?,?,?,?,?,?)"); stmt.setInt(1, smanutencao.getCod_manutencao()); // linha que dá defeito.. stmt.setInt(2, smanutencao.getCod_cliente()); stmt.setInt(3, smanutencao.getCod_funcionario()); stmt.setString(4, smanutencao.getDefeito()); stmt.setString(5, smanutencao.getAnalista()); stmt.setString(6, smanutencao.getStatus()); stmt.setString(7, smanutencao.getDataPrevisao()); stmt.execute(); } catch (SQLException e) { e.printStackTrace(); } finally { conBD.desconectar(); } }

Ok, e qual o problema que esta tendo com swing ?

qual seu banco?

Banco de dados: Postgres
Dúvida: não consigo inserir mais de 1 dado no banco, pq ele fala que o PK se repete… ou seja, ele não está serial… e sim eu setando um id pra ele… se eu setar pega…
mais dai eu nao queria isso… queria que ele fosse auto-incremental…

como fazer ai?

pra gerar o id em sequencia voce deve colocar no no bean essa coizinha aqui “@GeneratedValue(strategy = GenerationType.SEQUENCE)”.

então… eu ja imaginava isso… porem eu não estou gerando o banco automático, como mostra ai no 1° post, eu estou gerando apartir de um metodo jpql… e não gerando das classes direto…

pra falar a verdade, eu nem lembro mais como faz isso… so lembrei mesmo do basicão(que é a forma como estou usando atualmente)…

se puder me ajudar com isso, ficaria muito grato.

use

“serial” para ids autoincrementaveis

id serial

e utilize o default na hora do insert

insert into pessoa(default,valor1,valo2);

Olá amigo

		string.append("create table manutencao (");
		string.append("cod_manutencao serial not null, ");
		string.append("cod_cliente   integer, ");
		string.append("cod_funcionario   integer, ");
		string.append("defeito    varchar(50), ");
		string.append("analista   varchar(20), ");
		string.append("status     varchar(20), ");
		string.append("data       varchar(10), ");
		string.append("CONSTRAINT pk_id_manutencao PRIMARY KEY (cod_manutencao)) ");

eu faria assim:

		string.append("create table manutencao (");
		string.append("id serial not null, ");
		string.append("fk_cliente   integer, ");
		string.append("fk_funcionario   integer, ");
		string.append("defeito    varchar, ");
		string.append("analista   varchar, ");
		string.append("status     varchar, ");
		string.append("data       date, ");
		string.append("CONSTRAINT pk_id_manutencao PRIMARY KEY (id), ");
                string.append("CONSTRAINT fk_id_cliente FOREIGN KEY (fk_cliente) ");
                string.append("REFERENCES cliente (id) MATCH SIMPLE ");
                string.append("ON UPDATE NO ACTION ON DELETE NO ACTION, ");
                string.append("CONSTRAINT fk_id_funcionario FOREIGN KEY (fk_funcionario) ");
                string.append("REFERENCES funcionario (id) MATCH SIMPLE ");
                string.append("ON UPDATE NO ACTION ON DELETE NO ACTION) ");

só uma idéia.

Boa sorte

Silvio Guedes