A� est� pq gosto das listas de discu��o... sempre tem algu�m que manja
e vc acaba pegando alguma coisa... :-))
Alberto.
On Dec 16, "Orlando Dias" <[EMAIL PROTECTED]> wrote:
>
>
> 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]
>
---------------------------------------------------------------------
>
>
>
* Para n�o receber mais e-mails desta lista envie um e-mail para
[[EMAIL PROTECTED]]
e no corpo do email escreva [unsubscribe <seu-email>]
Veja as mensagens antigas em http://www.mail-archive.com/javabr%40cits.br/