Boa tarde colegas.
Estou com um problema que não consigo resolver de jeito nenhum, não estou conseguindo inserir os dados no bando de dados. Vou postar o código para ver se alguem consegue me ajudar. (o engraçada é que se deixar tudo em uma só classe funciona, mas em classes separadas dá NullPointerException).
//Classe da tela principal que chama a classe da tela para inserir
[b]package PckTelas;
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import PckConnection.ConnectionFactory;
public class TelaAbertura extends ConnectionFactory{
private JFrame janela;
private JPanel painelPrincipal, painelBotoes;
private JButton bInserir;
public void montaTela() {
montaJanela();
montaPainelPrincipal();
montaPainelBotoes();
botaoInserir();
mostraJanela();
}
private void montaJanela() {
janela = new JFrame("Cadastro de Colegas");
janela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
private void montaPainelPrincipal() {
painelPrincipal = new JPanel();
painelPrincipal.setLayout(new BorderLayout());
janela.add(painelPrincipal);
}
private void montaPainelBotoes() {
painelBotoes = new JPanel();
painelBotoes.setLayout(new GridLayout());
painelPrincipal.add(painelBotoes, BorderLayout.SOUTH);
}
private void botaoInserir() {
JButton bInserir = new JButton("Inserir");
painelBotoes.add(bInserir);
bInserir.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
new TelaInserir().montaTela();
}
});
}
private void mostraJanela() {
janela.pack();
janela.setSize(540, 540);
janela.setVisible(true);
}
public static void main(String[] args) {
TelaAbertura t = new TelaAbertura();
t.montaTela();
t.conectarOracle();
}
}[/b]
//Classe da tela para inserir dados
[b]package PckTelas;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import PckConnection.ConnectionFactory;
public class TelaInserir extends ConnectionFactory{
private JFrame janela;
private JPanel painelPrincipal;
private JLabel codigo, nome, endRes, endCom, telRes, telCel, telCom, ramal, dataNasc;
private JTextField tCodigo, tNome, tEndRes, tEndCom, tTelRes, tTelCel, tTelCom, tRamal, tDataNasc;
private JButton bInserir;
public void montaTela() {
montaJanela();
montaPainelPrincipal();
montaComponentes();
montaBotaoInserir();
mostraJanela();
}
public void montaJanela() {
janela = new JFrame("Inserir Cadastro");
janela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void montaPainelPrincipal() {
painelPrincipal = new JPanel();
painelPrincipal.setLayout(null);
janela.add(painelPrincipal);
}
public void montaComponentes() {
codigo = new JLabel("Codigo");
codigo.setBounds(10, 30, 40, 30);
tCodigo = new JTextField(5);
tCodigo.setEditable(true);
tCodigo.setBounds(75, 36, 40, 20);
painelPrincipal.add(codigo);
painelPrincipal.add(tCodigo);
nome = new JLabel("Nome");
nome.setBounds(10, 60, 40, 30);
tNome = new JTextField(40);
tNome.setBounds(75, 66, 300, 20);
painelPrincipal.add(nome);
painelPrincipal.add(tNome);
endRes = new JLabel("End. Res.");
endRes.setBounds(10, 90, 70, 30);
tEndRes = new JTextField(30);
tEndRes.setBounds(75, 96, 200, 20);
painelPrincipal.add(endRes);
painelPrincipal.add(tEndRes);
endCom = new JLabel("End. Com");
endCom.setBounds(10, 120, 70, 30);
tEndCom = new JTextField(30);
tEndCom.setBounds(75, 126, 200, 20);
painelPrincipal.add(endCom);
painelPrincipal.add(tEndCom);
telRes = new JLabel("Tel. Res.");
telRes.setBounds(10, 150, 70, 30);
tTelRes = new JTextField(9);
tTelRes.setBounds(75, 156, 80, 20);
painelPrincipal.add(telRes);
painelPrincipal.add(tTelRes);
telCel = new JLabel("Tel. Cel.");
telCel.setBounds(10, 180, 70, 30);
tTelCel = new JTextField(9);
tTelCel.setBounds(75, 186, 80, 20);
painelPrincipal.add(telCel);
painelPrincipal.add(tTelCel);
telCom = new JLabel("Tel. Com.");
telCom.setBounds(10, 210, 70, 30);
tTelCom = new JTextField(9);
tTelCom.setBounds(75, 216, 80, 20);
painelPrincipal.add(telCom);
painelPrincipal.add(tTelCom);
ramal = new JLabel("Ramal");
ramal.setBounds(360, 210, 40, 30);
tRamal = new JTextField(4);
tRamal.setBounds(400, 216, 40, 20);
painelPrincipal.add(ramal);
painelPrincipal.add(tRamal);
dataNasc = new JLabel("Data Nasc.");
dataNasc.setBounds(10, 240, 70, 30);
tDataNasc = new JTextField(10);
tDataNasc.setBounds(75, 246, 90, 20);
painelPrincipal.add(dataNasc);
painelPrincipal.add(tDataNasc);
}
public void montaBotaoInserir() {
bInserir = new JButton("Inserir");
bInserir.setBounds(10, 300, 100, 20);
bInserir.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
String inserir = "insert into contatos(codigo, nome, endRes, endCom, telRes, telCel, telCom, ramal) values(?,?,?,?,?,?,?,?)";
PreparedStatement stmt = conn.prepareStatement(inserir);
stmt.setInt(1, Integer.parseInt(tCodigo.getText()));
stmt.setString(2, tNome.getText());
stmt.setString(3, tEndRes.getText());
stmt.setString(4, tEndCom.getText());
stmt.setString(5, tTelRes.getText());
stmt.setString(6, tTelCel.getText());
stmt.setString(7, tTelCom.getText());
stmt.setString(8, tRamal.getText());
stmt.executeUpdate();
stmt.close();
tCodigo.setText(null);
tNome.setText(null);
tEndRes.setText(null);
tEndCom.setText(null);
tTelRes.setText(null);
tTelCel.setText(null);
tTelCom.setText(null);
tRamal.setText(null);
tDataNasc.setText(null);
tCodigo.requestFocus();
JOptionPane.showMessageDialog(null, "Cadastrado com sucesso");
} catch (SQLException erro) {
erro.printStackTrace();
}
}
});
painelPrincipal.add(bInserir);
}
public void mostraJanela() {
janela.pack();
janela.setSize(540, 540);
janela.setVisible(true);
}
}[/b]
//Classe para conexão com banco
[b]package PckConnection;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import javax.swing.JOptionPane;
public class ConnectionFactory {
protected Connection conn;
public void conectarOracle() {
try
{
Class.forName("oracle.jdbc.driver.OracleDriver");
conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:XE", "web", "web");
JOptionPane.showMessageDialog(null, "Conectado com o Oracle");
}catch(ClassNotFoundException erro) {
JOptionPane.showMessageDialog(null,"Driver JDBC-ODBC não encontrado!");
} catch(SQLException erro) {
JOptionPane.showMessageDialog(null,"Problemas na conexao com a fonte de dados");
}
}
protected void desconectarOracle() {
try {
conn.close();
JOptionPane.showMessageDialog(null, "Desconectado");
}catch(SQLException erro) {
JOptionPane.showMessageDialog(null,"Problemas na conexao com a fonte de dados");
}
}
}[/b]
Ai esta o código espero que alguem possa me ajudar