Olá gente, tudo bem??
Estou tentando persistir alguns dados no banco mas estou tendo problema… Da uma exceção de java.lang.NullPointerException no catch (Exception)
Estou tentando inserir pelo meio de procedures do BD, mas msm pelo modo convencional, fazendo um INSERT INTO pelo java dá o mesmo problema…
vou colocar minhas classes abaixo
[color=red] DAO Paciente - Método Cadastrar[/color]
public class DAOPaciente extends DAO_Generico
{
private static Connection connection;
public boolean cadastrar(Pacientes pac)
{
connection = Conexao.conectar();
try
{
/*String sqlInsert = "INSERT INTO PFC_PACIENTES (NOME_PAC, RG_PAC,CPF_PAC,LOGRADOURO_PAC) VALUES ('"+pac.getNome()+"','"+
pac.getRg()+"','"+pac.getCpf()+"','"+pac.getEndereco().getLogradouro()+"'";*/
String sqlInsert = "EXEC INSEREPACIENTE '" +pac.getNome()+"','"+pac.getRg()+"','"+pac.getOrgaoExped()+"',"+pac.getDataExpedicao()+
"','"+pac.getCpf()+","+pac.getEndereco().getLogradouro()+"','"+pac.getEndereco().getNumero()+"','"+pac.getEndereco().getComplemento()+
"','"+pac.getEndereco().getCep()+"','"+pac.getEndereco().getBairro()+"','"+pac.getEndereco().getCidades().getID()+"','"+
pac.getEndereco().getCidades().getEstados().getID()+"','"+pac.getContato().getTelefone1()+"','"+pac.getContato().getFax()+"','"+
"','"+pac.getContato().getTelefone2()+"','"+pac.getEmail().getEmail()+"','"+pac.getDataNascimento()+",'"+pac.getSexo()+"','"+
pac.getEstadoCivil()+"','"+pac.getEtnia()+"','"+pac.getProfissao()+"','"+pac.getNaturalidade()+"','"+pac.getNacionalidade()+
"',"+pac.getStatus()+"',"+pac.getFoto()+"'";
JOptionPane.showMessageDialog(null, "-chegou aqui-");
statement = connection.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
int cadastrado=statement.executeUpdate(sqlInsert);
if (cadastrado==1)
{JOptionPane.showMessageDialog(null, "cadastrado");
return true;}
else
{JOptionPane.showMessageDialog(null, "erro: ");
return false;}
}catch (SQLException erro)
{
JOptionPane.showMessageDialog(null, "Erro de Gravação dos dados. "+erro);
return false;
}catch (Exception erro)
{
JOptionPane.showMessageDialog(null, "Erro: "+erro);
return false;
}
}
[color=red]Classe de conexão[/color]
package br.com.sistemamedico.utilitarios;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import javax.swing.JOptionPane;
public class Conexao
{
private static String driver="net.sourceforge.jtds.jdbc.Driver";
private static String url="jdbc:jtds:sqlserver://localhost:1433/PFC";
private static String usuario="sa";
private static String senha="a1b2c3d4";
public static Connection conectar()
{
try
{
Class.forName(driver);
return DriverManager.getConnection(url,usuario,senha);
}catch(ClassNotFoundException Driver)
{
JOptionPane.showMessageDialog(null, "Driver do banco não foi encontrado. "+Driver);
}catch (SQLException Banco)
{
JOptionPane.showMessageDialog(null, "Erro de Manipulação do banco. "+Banco);
}
return null;
}
}
[color=red]Minha tabela do BD[/color]
CREATE TABLE PFC_Pacientes
(
ID_Pac INT IDENTITY,
Nome_Pac VARCHAR(200) NOT NULL,
RG_Pac VARCHAR(12) NOT NULL,
RG_OE_Pac VARCHAR(10),
RG_Emissao_Pac SMALLDATETIME,
CPF_Pac VARCHAR(11) NOT NULL,
Logradouro_Pac VARCHAR(200) NOT NULL,
Numero_Pac VARCHAR(5) NOT NULL,
Complemento_Pac VARCHAR(150),
CEP_Pac VARCHAR(9),
Bairro_Pac VARCHAR(100) NOT NULL,
Cidade_Pac INT NOT NULL,
Estado_Pac INT NOT NULL,
TelefoneR_Pac VARCHAR(11) NOT NULL,
TelefoneComl_Pac VARCHAR(11),
TelefoneC_Pac VARCHAR(11),
Fax_Pac VARCHAR(11),
Email_Pac VARCHAR(100),
DataNasc_Pac SMALLDATETIME NOT NULL,
Sexo_Pac VARCHAR(1) NOT NULL,
EstadoCivil_Pac VARCHAR(20) NOT NULL,
Etnia_Pac VARCHAR(20),
Prof_Pac INT NOT NULL,
Naturalidade_Pac VARCHAR(50),
Nacionalidade_Pac VARCHAR(50),
Status_Pac BIT NOT NULL,
Foto_Pac VARCHAR(300),
CONSTRAINT PK_Paciente PRIMARY KEY (ID_Pac),
CONSTRAINT UQ_RG_Pac UNIQUE (RG_Pac),
CONSTRAINT UQ_CPF_Pac UNIQUE (CPF_Pac),
CONSTRAINT FK_Estado_Pac FOREIGN KEY (Estado_Pac) REFERENCES PFC_Estados (ID_Estado),
CONSTRAINT FK_Cidade_Pac FOREIGN KEY (Cidade_Pac) REFERENCES PFC_Cidades (ID_Cidade),
CONSTRAINT FK_Prof_Pac FOREIGN KEY (Prof_Pac) REFERENCES PFC_Profissoes (ID_Prof)
)
[color=red]Minha Procedure do BD[/color]
CREATE PROCEDURE InserePaciente
@nome VARCHAR(200),
@RG VARCHAR(12),
@RG_OE VARCHAR(10),
@RG_Emissao SMALLDATETIME,
@CPF VARCHAR(11),
@logradouro VARCHAR(200),
@numero VARCHAR(5),
@complemento VARCHAR(150),
@CEP VARCHAR(9),
@bairro VARCHAR(100),
@cidade INT,
@estado INT,
@telefoneR VARCHAR(11),
@telefoneComl VARCHAR(11),
@telefoneC VARCHAR(11),
@fax VARCHAR(11),
@email VARCHAR(100),
@dataNasc SMALLDATETIME,
@sexo VARCHAR(1),
@estadoCivil VARCHAR(20),
@etnia VARCHAR(20),
@prof INT,
@naturalidade VARCHAR(50),
@nacionalidade VARCHAR(50),
@status BIT,
@foto VARCHAR(300)
AS
BEGIN TRANSACTION
INSERT PFC_Pacientes (Nome_Pac,RG_Pac,RG_OE_Pac,RG_Emissao_Pac,CPF_Pac,Logradouro_Pac,
Numero_Pac,Complemento_Pac,CEP_Pac,Bairro_Pac,Cidade_Pac,Estado_Pac,
TelefoneR_Pac,TelefoneComl_Pac,TelefoneC_Pac,Fax_Pac,Email_Pac,
DataNasc_Pac,Sexo_Pac,EstadoCivil_Pac,Etnia_Pac,Prof_Pac,Naturalidade_Pac,
Nacionalidade_Pac,Status_Pac,Foto_Pac)
VALUES (@nome,@RG,@RG_OE,@RG_Emissao,@CPF,@logradouro,@numero,@complemento,@CEP,@bairro,@cidade,
@estado,@telefoneR,@telefoneComl,@telefoneC,@fax,@email,@dataNasc,@sexo,@estadoCivil,
@etnia,@prof,@naturalidade,@nacionalidade,@status,@foto)
IF (@@error <> 0)
BEGIN
ROLLBACK TRANSACTION
RAISERROR('Erro de inserção na tabela "Pacientes"',16,1)
RETURN
END
COMMIT TRANSACTION
go
Explicando… minha view está em flex… faço os inserts pelo flex msm (possuo as classes espelhos em AS) e mando pro java… jah coloquei uns showmessagedialog para ver se os dados estão “setados” de forma certa e estão…
Qdo coloco o showmessage logo abaixo da String q recebe o comando SQL esse showmessage naum é apresentado e vai para a excessão… se coloco na linha acima ele aparece normal…
Se puderem me ajudar agradeço muito…
att.
Junior