Problemas com Swing

7 respostas
rildomar

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:

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();
		}
	}

Minha classe.java

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..

exatamente nesta linha:

string.append("cod_manutencao integer primary key, ");
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();
		}
	}

7 Respostas

guilherme.dio

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

JuniorMaia

qual seu banco?

rildomar

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?

ambrozio

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

rildomar

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.

d34d_d3v1l

use

“serial” para ids autoincrementaveis

id serial

e utilize o default na hora do insert

insert into pessoa(default,valor1,valo2);

S

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

Criado 15 de maio de 2012
Ultima resposta 17 de mai. de 2012
Respostas 7
Participantes 6