Tenho um cadastro de clientes, toda vez que eu salvo no banco de dados quero que ele gere um numero de controle, por exemplo:
nome: guj
codigo: 001
nome: java
codigo: 002
Isso eu faco criando uma coluna no banco de dados chamada ID ou qq nome que seja e pego esse valor e desponiobilizo para o usuário ou o java pode criar ?? Que classe ou classes eu poderia usar para fazer isso, valew
Bancos de dados normalmente têm um recurso normalmente chamado “auto-increment” ou “sequence”; depende do seu banco.
Geração de números seqüenciais normalmente deve ser deixada a cargo do banco.
A
asdhfsd87623
seria o sql server
mas quero que quando eu faca isso o proprio banco adiciona no campo chamado ID e na proxima vez em que eu for fazer uma busca ele ja traga no campo destinado o valor determinado ! Como eu faco isso, nao sei
Rafael_Nunes
Com auto-increment(no caso do SQL Server) ele sempre vai te adicionar o próximo valor no campo. É como se ele fizesse um SELECT MAX(id) e acrescentasse mais um.
Basta você definir o campo como auto-increment
Posso usar essa classe em connection pool ou devo instancia-lo na hora do meu cadastro ?
T
thingol
Cuidado com o tal do select max() para pegar o último valor gerado. Isso supõe que você é o único usuário do banco. Quando há vários usuários no banco, select max() dá problemas muito sérios, podendo dar resultados incorretos ou chaves duplicadas. Rolou uma thread neste forum que contava os apuros de um colega nosso que pegou um sistema que fazia exatamente isso.
Para pegar o valor gerado pela coluna com auto-increment, no caso do SQL Server, eu peço a “ajuda dos universitários”. Sei que o JDBC 3.0 tem esse recurso ( é só ver na documentação do JDBC 3.0:
Statementstmt=conn.createStatement();// indicate that the key generated is going to be returnedintrows=stmt.executeUpdate("INSERT INTO ORDERS "+"(ISBN, CUSTOMERID) "+"VALUES (195123018, ’BILLG’)",Statement.RETURN_GENERATED_KEYS);ResultSetrs=stmt.getGeneratedKeys();booleanb=rs.next();if(b==true){// retrieve the new key value...}
mas o driver da Microsoft não é JDBC 3.0; você precisaria usar o JTDS, que se não me engano implementa o JDBC 3.0.
A
asdhfsd87623
A principio seria para uma unica pessoa inserir dados na tabela, mas a medio prazo eu faria algo que mais de um passaria a cadastrar, entao vou olhar a doc do JDBC 3.0 e o JTDS, esse ultimo eu ja vi algo, mas nunca procurei nada a respeito !