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.
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
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
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:
Statement stmt = conn.createStatement();
// indicate that the key generated is going to be returned
int rows = stmt.executeUpdate("INSERT INTO ORDERS " +
"(ISBN, CUSTOMERID) " +
"VALUES (195123018, ’BILLG’)",
Statement.RETURN_GENERATED_KEYS);
ResultSet rs = stmt.getGeneratedKeys();
boolean b = 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 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 !