Carlos,
Acredito que o problema aqui n�o � a utiliza��o de banco de dados de verdade
(j� que o MS-Access n�o o �).
O problema � a utiliza��o de um dado externo, artificial a sua entidade ou
objeto, que � o caso da auto-numera��o do MS-Access.
O ideal no modelo relacional � que voc� tenha uma chave que seja formada por
dados j� existentes na sua entidade (que tal a concatena��o o IP + o Local),
que o mundo externo a aplica��o conhe�a, facilitando assim as consultas.
Sei que muita gente utiliza a auto-numera��o para resolver problemas de
chaves-prim�rias, principalmente, quando estas tabelas n�o tem um atributo
conveniente (tabela de bairro, por exemplo, qual a diferen�a de se criar um
c�digo de bairro e uma auto-numera��o - os dois s�o artificiais!), ou
quando a concatena��o gera uma chave muito longa (criando �reas de �ndices
muito volumosas).
Existem muitas discu��es a este respeito: pessoas que acham que a
auto-numera��o � muito legal, que facilita a vida, que diminui espa�o no BD
e outras que olham para os relacionamentos e n�o entendem nada porque s�o
montados sobre dados inexistentes no mundo real.
A auto-numera��o � uma solu��o excelente para logs (em substitui��o ao
Time-stamp) e para tabelas (objetos) descritivos (bairros, cidades, status
etc). Normalmente estas tabelas teriam uma chave prim�ria formada por um s�
atributo e este seria artificial.
Agora para tabelas ou objetos dependentes (subclasses) utilize a
concatena��o. A menos que a sua tabela seja imensa e o espa�o consumido pelo
ind�ce v� lhe causar problemas (estouro do espa�o).
Na sua aplica��o, como voc� conhece os atributos (vc est� gravando-os), voc�
conheceria a chave prim�ria, que poderia ser passada sem precisar de uma
nova consulta para descobri-la.
Desculpe-me se chovi no molhado.
Sds,
Orlando Dias
-----Mensagem original-----
De: Carlos Campos <[EMAIL PROTECTED]>
Para: '[EMAIL PROTECTED]' <[EMAIL PROTECTED]>
Cc: 'Lista Java BR' <[EMAIL PROTECTED]>
Data: Quarta-feira, 15 de Dezembro de 1999 19:30
Assunto: RES: [SouJava-J] INSERT INTO do SQL
>Oi Bruno,
>
>Claro que vc ajudou muito. S� pelo fato de tentar responder j� � um fato
>a agradecer.
>
>Eu sei que o MS ACCESS deixa muito a desejar. Quando usava MS ACCESS com
>Visual Basic, tentei usar transa��o e era uma desgra�a. As opera��es no
>Banco travavam e gerava um delay rid�culo.
>
>Enquanto n�o substituo o Banco de Dados e, tentando evitar qualquer
>problema de colis�o com o m�ltiplo acesso dos usu�rios, uma op��o seria
>utilizar uma Tabela-Contador e n�o utilizar a Auto-Numera��o do MS
>ACCESS.
>
>Muito Obrigado pela ajuda,
>
>[]'s
>
>Carlos Campos
>
>> ----- Mensagem original -----
>> De: Bruno Diniz de Paula [SMTP:[EMAIL PROTECTED]]
>> Enviada em: Quarta-feira, 15 de Dezembro de 1999 17:44
>> Para: 'Lista SouJava'
>> Cc: 'Lista Java BR'
>> Assunto: Re: [SouJava-J] INSERT INTO do SQL
>>
>>
>> Oi Carlos,
>>
>> nunca vi nada parecido com o retorno do ultimo registro inserido
>> no banco. Logo, essa alternativa e' furada.
>> Utilizando Access fica dificil de trabalhar porque ele nao
>> possui
>> o conceito de transacao e isolamento. Uma alternativa seria voce fazer
>> a
>> insercao e logo depois uma consulta ao "max(ChavePrimaria)" para
>> retornar
>> o valor de chave inserido, tudo isso dentro de uma transacao. Em
>> bancos
>> de dados maiores como Oracle, Informix isso funcionaria no seu caso,
>> mas
>> com multiplos usuarios acessando o Access acredito que nao sirva. Mas
>> de
>> qualquer forma, eis um pequeno exemplo do codigo necessario:
>>
>> Connection con = ...
>> Statement st = con.createStatement();
>> ResultSet rs = null;
>>
>> con.setAutoCommit(false);
>> st.executeUpdate("insert ...
>>
>> rs = st.executeQuery("select max(cp) from ...
>> int codigo = -1;
>> if(rs.next())
>> codigo = rs.getInt(1);
>> rs.close();
>> con.commit();
>> con.setAutoCommit(true);
>> st.close();
>>
>> Espero ter ajudado em alguma coisa!
>>
>> Abracos
>>
>> Bruno.
>>
>> On Wed, 15 Dec 1999, Carlos Campos wrote:
>>
>> > Prezados Javaneses,
>> >
>> > Criei um servlet que insere um registro num Banco de Dados MS ACCESS
>> > conforme c�digo abaixo. Gostaria de, ap�s inserir o registro na
>> tabela,
>> > redirecionar o fluxo para um outro servlet passando como argumento a
>> > Chave Prim�ria.
>> >
>> > Ocorre que, neste caso espec�fico, a chave prim�ria � um campo de
>> > AUTO-NUMERA��O, onde eu n�o tenho conhecimento pr�vio do seu
>> conte�do
>> > at� a inser��o do registro.
>> >
>> > Pergunta(s):
>> >
>> > Como fazer, qual comando utilizar, para recuperar o campo criado
>> pelo
>> > Statement???
>> >
>> > Terei que fazer um novo Select num Resultset??? E como garantir a
>> > recupera��o do registro correto tendo em vista que o ODBC possui um
>> > delay na atualiza��o do Banco de Dados e se trata de uma INTRANET???
>> >
>> > Existe algum recurso que me permita recuperar o �ltimo registro
>> gravado
>> > logo ap�s o INSERT???
>> >
>> > Agrade�o a todos,
>> >
>> > String query = new String();
>> > if(ope.equalsIgnoreCase("I")) {
>> > query = "insert into Bei
>> >
>> Bei_Descricao,Bei_Responsavel,Bei_Local,Bei_IP,Bei_Ponto,Bei_Codpat,Be
>> i_
>> > Nserie,Bei_Categoria,Bei_Tipo,Bei_Dua,Bei_Lua,Bei_Status)";
>> > query += " values
>> >
>> ('"+des+"','"+resp+"','"+local+"','"+ip+"','"+ponto+"','"+pat+"','"+se
>> ri
>> > e+"','"+cat+"','"+tipo+"','"+dua+"','"+lua+"',"+istatus+")";
>> >
>> > stmt.executeUpdate(query);
>> >
>> > []'s
>> >
>> > Carlos Campos
>> > [EMAIL PROTECTED]
>> > Analista de Sistemas / Bolsista PCI
>> > MCT/CNPq - CETEM - Centro de Tecnologia Mineral
>> > Fone: 0xx21 5607222 - Ext. 358
>> >
>> > --------------------------- LISTA SOUJAVA
>> ---------------------------
>> > http://www.soujava.org.br - Sociedade de Usu�rios Java da
>> Sucesu-SP
>> > [para sair da lista:
>> http://www.soujava.org.br/forum/cadastrados.htm]
>> >
>> ---------------------------------------------------------------------
>> >
>>
>>
>> ______________________________________________________________
>> Bruno Diniz de Paula
>> [EMAIL PROTECTED] - UFMG
>> [EMAIL PROTECTED] - Telemig Celular
>>
>> "Coracoes ao alto e pes no chao."
>>
>> "A verdadeira experiencia com Deus nao nos faz
>> fugir da realidade, mas nos da forcas para
>> enfrenta-la e transforma-la."
>>
>> Pe. Zeca
>>
>> --------------------------- LISTA SOUJAVA
>> ---------------------------
>> http://www.soujava.org.br - Sociedade de Usu�rios Java da
>> Sucesu-SP
>> [para sair da lista:
>> http://www.soujava.org.br/forum/cadastrados.htm]
>>
>> ---------------------------------------------------------------------
>
> --------------------------- LISTA SOUJAVA ---------------------------
> http://www.soujava.org.br - Sociedade de Usu�rios Java da Sucesu-SP
> [para sair da lista: http://www.soujava.org.br/forum/cadastrados.htm]
> ---------------------------------------------------------------------
>
--------------------------- LISTA SOUJAVA ---------------------------
http://www.soujava.org.br - Sociedade de Usu�rios Java da Sucesu-SP
[para sair da lista: http://www.soujava.org.br/forum/cadastrados.htm]
---------------------------------------------------------------------