----- Original Message -----
Sent: Wednesday, August 08, 2001 6:14
PM
Subject: [java-list] Banco de dados no
JBuilder
Olá pessoal,
Error #: 360 : unreported exception: java.lang.Exception;
must be caught or declared to be thrown at line 130, column 20
Alguém sabe o que signfica este erro? Segue o código que
usei para testar:
package jdbc;
import java.awt.*;
import java.awt.event.*;
import
javax.swing.*;
import java.util.Vector;
import java.sql.*;
import
com.borland.dx.sql.dataset.*;
public class Frame1 extends JFrame {
JPanel
contentPane;
Database database1 = new Database();
JTextField jTextField1 = new JTextField();
JButton jButton1 = new
JButton();
JLabel jLabel1 = new JLabel();
JLabel jLabel2
= new JLabel();
JTextField jTextField2 = new
JTextField();
/**Construct the frame*/
public Frame1() {
enableEvents(AWTEvent.WINDOW_EVENT_MASK);
try
{
jbInit();
}
catch(Exception e)
{
e.printStackTrace();
}
}
/**Component initialization*/
private
void jbInit() throws Exception {
jTextField1.setBounds(new Rectangle(43, 125, 201,
26));
database1.setConnection(new
com.borland.dx.sql.dataset.ConnectionDescriptor("jdbc:interbase://localhost/C:\\java\\JDBC\\BANCO.GDB",
"SYSDBA", "masterkey", false,
"interbase.interclient.Driver"));
database1.setTransactionIsolation(java.sql.Connection.TRANSACTION_SERIALIZABLE);
file://setIconImage(Toolkit.getDefaultToolkit().createImage(Frame1.class.getResource("[Your
Icon]")));
contentPane = (JPanel)
this.getContentPane();
contentPane.setLayout(null);
this.setSize(new
Dimension(400, 300));
this.setTitle("Agenda");
jButton1.setText("jButton1");
jButton1.setBounds(new
Rectangle(46, 162, 93, 40));
jButton1.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(ActionEvent
e) {
jButton1_actionPerformed(e);
}
});
jLabel1.setText("Dinheiro:");
jLabel1.setBounds(new
Rectangle(43, 108, 99, 17));
jLabel2.setText("Conta:");
jLabel2.setBounds(new
Rectangle(41, 53, 41, 17));
jTextField2.setBounds(new
Rectangle(42, 73, 179, 31));
contentPane.add(jButton1,
null);
contentPane.add(jTextField1,
null);
contentPane.add(jLabel1,
null);
contentPane.add(jLabel2,
null);
contentPane.add(jTextField2, null);
}
/**Overridden so we can exit when window is closed*/
protected void processWindowEvent(WindowEvent e) {
super.processWindowEvent(e);
if (e.getID() ==
WindowEvent.WINDOW_CLOSING) {
System.exit(0);
}
}
void faz_transferencia (int conta_origem, int
conta_destino, int valor)
throws Exception {
int co_saldo_init = 0, cd_saldo_init = 0;
java.sql.ResultSet results;
java.sql.Statement statement = database1.createStatement()
;
database1.start();
// 'Reseta' o autoCommit de forma que todos os comandos
seja executados dentro da mesma transação...
database1.setAutoCommit( false );
results = statement.executeQuery("SELECT SALDO FROM CONTAS
WHERE NUM_CONTA = " + conta_origem);
// Tenta posicionar no primeiro registro. Se der erro,
gera uma exceção.
if (results.next()) co_saldo_init =
results.getInt("SALDO") ;
else {
database1.rollback();
throw new Exception(" ERRO: Conta origem não
existente.");
}
results = statement.executeQuery("SELECT SALDO FROM CONTAS
WHERE NUM_CONTA = " + conta_destino);
// Tenta posicionar no primeiro registro. Se der erro,
gera uma exceção.
if (results.next()) cd_saldo_init =
results.getInt("SALDO") ;
else {
database1.rollback();
throw new Exception(" ERRO: Conta destino não
existente.");
}
if (co_saldo_init < valor) {
database1.rollback();
throw new Exception(" ERRO: Saldo
insuficiente.");
}
statement.executeUpdate("UPDATE CONTAS SET SALDO = SALDO -
" + valor + " WHERE NUM_CONTA = "+ conta_origem);
statement.executeUpdate("UPDATE CONTAS SET SALDO = SALDO +
" + valor + " WHERE NUM_CONTA = "+ conta_destino);
database1.commit();
results.close();
}
void jButton1_actionPerformed(ActionEvent e){
faz_transferencia(123, 456, 50);
}
}