ola,
alguem poderia me explicar como eu faço para editar o conteudo de uma linha especifica da jtable e alterar no banco de dados.
Já tentei usar getvalueat o meu problema é que na jtable ele altera so akela linha que é o certo mas no banco altera tudo daquela coluna!!!
meu codigo é este
Eu acho que o seu problema pode estar no valor que está usando para selecionar quais registros serão atualizados. Você garante que rc_aluno é único para cada aluno? Se não for, o UPDATE será executado para todos os registros para o qual a cláusula where retorne true. Pegue o SQL que está sendo gerado no console e copie a cláusula where para um select e veja se apenas um registro é retornado.
Além disso, existem uma série de otimizações que você pode fazer no seu código que facilitaria muito a leitura e a manutenção, como:
usar um StringBuilder para construir sua consulta (e fazê-lo somente uma vez, usando a mesma String para o system.out e o executeUpdate)
olá super_swinger,
eu estou usando o println apenas para verificar se estava pesquisando de forma correta,apenas para teste
mas o que eu realmente gostaria de saber é como não alterar todos os itens da coluna no banco e sim apenas o que for alterado na tabela
Só para esclarecer, o que você queria era atualizar apenas a coluna do registro que o usuário atualizou na tabela? Você já está atualizando apenas um registro, mas pelo SQL que está gerando está atualizando várias colunas, é esse o seu problema?
Se for, poderia usar um switch usando o getColumn do evento, para saber qual coluna foi alterada, acho que algo do tipo:
StringBuilder sql = new StringBuilder("UPDATE financeiro SET ");
switch (evento.getColumn()) {
case 0:
sql.append("valor_entrada = '");
sql.append(table.getModel().getValueAt(table.getSelectedRow(),0 ));
sql.append("'");
break;
case 1:
... // um case para cada coluna
}
sql.append(" WHERE rc_aluno='");
sql.append(t2.getText());
sql.append("'");
String update = sql.toString();
System.out.println(update);
comando.executeUpdate(update);
todas as alterações estavam ocorrendo de forma correta até que percebi que os itens do case 0 e 1 não estão funcionando como os ultimos cases eu fiz algo errado no codigo?
UPDATE nota SET WHERE rc_aluno='5'
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE rc_aluno='5'' at line 1
dai o campo que quero trocar não aparece no cod sql=( fica vazio
troquei os cases de lugares mas realmente só funciona o case 2
=(
pq?tipo não deveria funcionar todos os cases de acordo com a linha selecionada na tabela?
ja chequiei as colunas e parecem estar corretas…
o que posso fazer para arrumar isto?
obg
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE rc_aluno='5'' at line 1
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:409)
at com.mysql.jdbc.Util.getInstance(Util.java:384)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1054)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3566)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3498)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1959)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2113)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2562)
at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1664)
at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1583)
at telaVisualizacaoDeNotas$9.tableChanged(telaVisualizacaoDeNotas.java:572)
...
dai o case 1 fica assim
drsmachado
bah naum sei o q fiz errado mas agora da erro nos 3 cases tipo
eu tentei assim
case 2:
sql.toString().concat("nota = '");
sql.append(table.getModel().getValueAt(table.getSelectedRow(),2 ));
sql.append("'");
System.out.println("nota = '"+table.getModel().getValueAt(table.getSelectedRow(),2 )+"'");
break;
deixando os outros cases iguais mas deu erro de sintaxe no cod mysql em todos os cases e eles apareceram vazios tmbm,dai usei o sql.toString().concat("observacao = '"); //case 0
sql.toString().concat("atividade = '");//case 1
mas continua dando erro de sintaxe =(
o q fiz errado?
obg