Como fazer UPDATE?

11 respostas
filipe.f1

[b]Galera, estou com 2 problemas, não tenho muita experiencia com JAVA, mas aparentemente não há nenhum erro, por favor me ajudem!!!

1º Consegui fazer o select, insert e delete, mas no UPDATE dá erro "Exception SQL" e não faz o UPDATE:

private JButton getJButton23() {
		if (f_alt == null) {
			f_alt = new JButton();
			f_alt.setBounds(new java.awt.Rectangle(207,241,89,26));
			f_alt.setText("Alterar");			f_alt.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					ResultSet rs;
					Statement MeuState ;
					String Url = "jdbc:odbc:geee";
					
					String A = tf_fun.getText();
					String B = tf_nome.getText();
					String C = tf_dep.getText();
					String D = tf_tel.getText();
					String E = tf_end.getText();
					String F = tf_sal.getText();
					
						
					try
					{	
						Connection Conexao = DriverManager.getConnection(Url);
						MeuState = Conexao.createStatement();
						String SQL = "UPDATE funcionario SET (nome='"+B+"',id_dept='"+C+"',tel='"+D+"',end='"+E+"',salario='"+F+"') WHERE id_func ='"+A+"'";
						MeuState.executeUpdate(SQL);
					   	JOptionPane.showMessageDialog(null,""+"Funcionário atualizado \ncom sucesso!","Mensagem",1); 
						
					
					}
					catch(SQLException ex)
					{
						JOptionPane.showMessageDialog(null,"Erro de SQL ", "Erro",0);
					}
				}
			});
}
		return f_alt;}

2º Na janela de exibir um relatório ele faz o SELECT, exibe tudo normalmente, mas também da erro "Exception SQL":

private JButton getJButton25() {
		if (rf_con == null) {
			rf_con = new JButton();
			rf_con.setBounds(new java.awt.Rectangle(151,241,89,26));
			rf_con.setText("Consultar");
			rf_con.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					ResultSet rs;
					Statement MeuState ;
					String Url = "jdbc:odbc:geee";
					try
					{
						Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
						Connection Conexao = DriverManager.getConnection(Url);
						MeuState = Conexao.createStatement();
						
						String SQL = "SELECT * FROM funcionario";
						
						rs = MeuState.executeQuery(SQL);
						
						rs.next();
						
						String A = "\t   ... Relatório de Funcionários Cadastrados no Sistema ...\n\n";
						ta_f.append(A);
						
						for(int x=0;x<20;x++)
						{
							String B = rs.getString("id_func");
							String C = rs.getString("nome");
							String D = rs.getString("end");
							String E = rs.getString("tel");
							String F = rs.getString("salario");
							String G = rs.getString("id_dept");
							A = "\n\t"+" ID Func: "+B+"\t Nome: "+C+"\n\t Endereço: "+D+"\t Tel: "+E+"\n\t Salário: "+F+"\t ID Depto: "+G+"\n---------------------------------------------------------------------------------------------------";
							ta_f.append(A);
							rs.next();			    
						}  
						rs.close();	
								
					}
					catch(SQLException ex)
					{
						JOptionPane.showMessageDialog(null, "Erro no SQL","Erro",1);
						}
					catch(ClassNotFoundException ex)
					{
						JOptionPane.showMessageDialog(null,"Driver JDBC-ODBC não encontrado ","Mensagem",1);
						System.exit(0);
					}}});}
		return rf_con;}

Alguem pode me ajudar??? TO FICANDO LOKO TENTANDO RESOLVER ISSO!!! :x

VLW!!!

11 Respostas

T

Aham, o que realmente ocorreu? Sem o stack trace completo (que você obtém com “ex.printStackTrace()” fica difícil dizer exatamente o que ocorreu.

rafaelglauber

Oi,

Após fazer o que thingol falou pegue o valor da variável SQL desse trecho:

String SQL = "UPDATE funcionario SET (nome='"+B+"',id_dept='"+C+"',tel='"+D+"',end='"+E+"',salario='"+F+"') WHERE id_func ='"+A+"'";

e coloque em alguma ferramenta de administração de BD, veja o que tem de errado, normalmente um valor em branco, uma virgula no lugar errado, uma instrução colada na outra invalidando o comando…essas são as mais comum.

DICA: Prefira Prepared Statement: http://java.sun.com/docs/books/tutorial/jdbc/basics/prepared.html eivta muita dor de cabeça desse tipo.

filipe.f1

[b]Consegui fazer o UPDATE! Muito obrigado pela ajuda!

Era só tirar o parenteses!

Agora só falta o relatório! Que exibe todos os dados, mas da erro…

No aguardo… T+

VLW[/b]

rafaelglauber

Oi,

Antes de ficar no aguardo posta o stack trace do erro, pois SQLException pode ser ocasionado por muitos modivos, inclusive isso que você descobriu: Um parêntese no lugar errado.

filipe.f1

Desculpe mas ainda estou aprendendo java… Como faço isso???

:oops:

rafaelglauber

Oi,

remove este catch

e espera para ver no que dá!

Por causa do erro vai aparecer um monte de linha no console, esse monte de linha de erro é o stack trace.

filipe.f1

Aqui esta:

IWAV0052E Invocation Target Exception creating javabd_pk.tela_principaljava.lang.reflect.InvocationTargetException

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 org.eclipse.ve.internal.java.vce.launcher.remotevm.JFCLauncher.launch(JFCLauncher.java:56)
at org.eclipse.ve.internal.java.vce.launcher.remotevm.JavaBeansLauncher.main(JavaBeansLauncher.java:77)

Caused by: java.lang.Error: Unresolved compilation problems:
Unhandled exception type SQLException
Unhandled exception type SQLException
Unhandled exception type SQLException
Unhandled exception type SQLException
Unhandled exception type SQLException
Unhandled exception type SQLException
Unhandled exception type SQLException
Unhandled exception type SQLException
Unhandled exception type SQLException
Unhandled exception type SQLException
Unhandled exception type SQLException
Unhandled exception type SQLException

at javabd_pk.tela_principal.getJButton25(tela_principal.java:579)
at javabd_pk.tela_principal.getP_rf(tela_principal.java:557)
at javabd_pk.tela_principal.getP_menu(tela_principal.java:968)
at javabd_pk.tela_principal.initialize(tela_principal.java:941)
at javabd_pk.tela_principal.<init>(tela_principal.java:87)
... 6 more
rafaelglauber

Oi,

for(int x=0;x<20;x++) { //... um monte de código ta_f.append(A); rs.next(); }

Repare que você tá fazendo next() 20x por causa de seu for, você tem 20 registros no banco? Se não tiver tá explicado o erro.

filipe.f1

Hummmm entendi!!! Vlw!!!

Mas como eu faço pra ele fazer o next, até que encontre um registro vazio???

rafaelglauber

filipe.f1:
Hummmm entendi!!! Vlw!!!

Mas como eu faço pra ele fazer o next, até que encontre um registro vazio???

Oi,

Aqui você acha um tutorial com exemplo: http://java.sun.com/docs/books/tutorial/jdbc/basics/retrieving.html

exemplo:

ResultSet srs = stmt.executeQuery("SELECT * FROM funcionarios"); while (srs.next()) { String name = srs.getString("campo1"); int codigo = srs.getInt("campo2"); System.out.println(name + " " + codigo); }

filipe.f1

Vlwwwww Rafaeeeeeeeel!!!
CONSEGUIIIIIIIIIIIII graças a vc!!!

Noosssa toda vez que não consigo fazer algo, fiko quebrando a cabeça até conseguir…

Obrigado por ter me ajudado!!! Vou aprender JAVA e trabalhar como SENIOR!



.

Criado 29 de setembro de 2008
Ultima resposta 30 de set. de 2008
Respostas 11
Participantes 3