ResultSet e SQL

9 respostas
M

gostaria de saber como fço para pegar um registro que estla na linha x da tabela… Eu ja conheço a linha e gostaria de passa-la como parametro para um metodo e fazer o resultset ii direto nela…

uma outra dúvida, agora so sobre sql, como faço para criar um campo com auro-incremento… por exemplo, um campo chamado “id” e toda vez que coloco um novo registro ele incrementa (1,2,3…)…

vlw
inté

9 Respostas

D

Use o metodo

JTable.getValueAt(numeroDaLinha, numeroDaColuna)

sendo que a primira linha de uma JTable é a linha 0.

isso retorna um Object, portanto vc tem que usar o metodo toString() para obter uma String com o q tem no campo.

se sua tabela só puder ter uma unica linha selecionada, e vc conseque isso com o método

table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

vc tb pode usar um metodo JTable.getSelectedRow() ou JTable.getSelectedColumn() para saber qual linha e coluna esta selecionada esta selecionada.

ai vc pode combinar tudo e usar o getValueAt para pegar o valor do campo selecionada assim:

string= table.getValueAt(table.getSelectedRow(),table.getSelectedColumn()).toString();

Quanto a outra pergunta eu não sembro, mas se vc estiver usando alguma ferramenta para criar o BD ela coloca essa propriedade como uma opção na hora q vc está criando o campo da tabela

wbsouza
  • Não há mágica, será preciso executar o metodo next várias vezes. Por exemplo quero ir para o registro 20 faço o seguinte
rs.first();
for (int i = 0; i < 20; i ++) rs.next();
  • Este recurso de auto-incremento é fornecido pelo banco de dados. O problema é que cada banco de dados implementa à sua maneira, alguns lhe fornecem um codigo sequencial gerado baseado em algum objeto (Oracle, Interbase, Firebird, etc) que gerencia a sequencia, outros bancos fornecem este recurso somente depois o advento do insert, ou seja vc não sabe qual o identificador de antemão, somente após a inserção (MSSQL, Informix, Sybase, MySql, etc). Para conseguir uma independência da aplicação e nao ficar preso ao banco de dados, utilizo SessionBean e uma tabela para gerenciar as sequencias onde eu tenho o nome da sequencia, e o número atual, sempre que é solicitado uma nova sequencia, faço um update na tabela incrementando o número atual da sequencia e retornando para o cliente. Obs: o metodo que pega a proxima sequencia deve ser sincronyzed para evitar que chamadas simultaneas possam causar um resultado inesperado.

[]s, Welington B. Souza

D

nossa viajei na resposta!!!

To preocupado com a minha JTable e qualquer coisa que me falem sobre tabela eu penso na maldita!

Foi mal!!!

M

aki estou usando o MS Sql server 2000, e uma vez qndo usei o acces vc podia setar nas propriedades do campo para ele incrementar automaticamente, no sql não vi nada parecido…

D

Vou tentar não viajar nessa resposta!

acho que o comando em SQL para o SQL Server é IDENTITY.

Fica assim:

CREATE TABLE tabela (cod IDENTITY Increment 2 primary key, …);

O Increment eu sei que existe, ele serve para vc especificar o incremento, caso seja 1 não precisa por, agora o IDENTITY eu não tenho certeza, tenta e depois me da uma resposta!

M

e como fica o nome do canpo identyti?

é que nesse pc não tenho sql, so no serviço

D

no exemplo q eu passei era cod, fica assim

CREATE TABLE nomeDaTabela (nomeDoCampo IDENTITY Increment 3, …);

Foi isso q vc perguntou??

M

isso… vlw

LN2EE

P.S.
cuidado ao metodo retornar um ResultSet, pq para vc retorna um RS não vai poder fechar o PreparedStatement enquando não terminar de usar o RS, e o cursor do Banco de dados pode ficar aberto se vc não fechar o RS.close(); e o PreparedStatement.close();… fica a dica…

falow ae

Criado 3 de maio de 2003
Ultima resposta 13 de mai. de 2003
Respostas 9
Participantes 4