Problema ao Inserir dados no MYSql

4 respostas
R

Boa Tarde

Quando coloco para executar o código está dando o erro Exception in thread "main" java.lang.NullPointerException at pct_bd_escola.Cadastrar.main(Cadastrar.java:17) e não consigo identificar o que fiz de errado no código.

Classe ConexaoBD

package pct_bd_escola;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;

import javax.swing.JOptionPane;

public class ConexaoBD 
{	
	public Connection con ;
	public boolean getConexao()
	{
		String conexao = "Conexão Aberta com sucesso!!";
		try
		{	 
			String driverMYSQL = "com.mysql.jdbc.Driver"; 
			String URL = "jdbc:mysql://localhost:3306/bd_escola"; 
			String USUARIO= "unip"; 
			String SENHA = "unip"; 
			Class.forName(driverMYSQL); 
			con = DriverManager.getConnection(URL, USUARIO, SENHA); 
		} 
		catch(ClassNotFoundException erro1) 
		{ 
			conexao = "Driver JDBC não encontrado!\n"+ erro1.toString(); 
		} 
		catch(SQLException erro2) 
		{ 
			conexao = "Problemas com a conexão com o BD! Verifique o LOGIN e SENHA \n"+erro2.toString();  
		} 
		return true;
	}
	public void closeConexao() 
	{
		String conexao = "Fim conexão!!";
		try
		{
		con.close();
		}
		catch(SQLException error)
		{
			conexao = "Erro fim conexão!!";
		}
	}
	public Statement createStatement() 
	{
		return null;
	}
	

}

Classe Cadastrar

package pct_bd_escola;

import java.sql.*;

import javax.swing.JOptionPane;

public class Cadastrar 
{
	public static void main(String[] args)
	{
		ConexaoBD conexao = new ConexaoBD();
		conexao.getConexao();
		
		try
		{
			Statement stmt = conexao.createStatement();
			stmt.executeUpdate("INSERT INTO tb_aluno ( id_aluno, nm_aluno, mat_aluno,cpf_aluno) VALUES (1189,'Marechal Deodoro',889980,223345)");
			System.out.println("Operação realizada com sucesso.");
		}
		catch(SQLException error)
		{
			System.out.println("Erro ao cadastrar usuário!");
		}
		finally
		{
		conexao.closeConexao();
		}
	}

}

lembrando que é um trabalho acadêmico e não tenho muito experiência com java.

4 Respostas

romarcio

Seu método createStatement() ta retornando null:

public Statement createStatement()   
    {  
        return null;  
    }

Você tem que retornar o objeto connection e não null.

R

Não to conseguindo implementar o Objeto connection que eu instanciei con, poderia por favor me exemplificar como que teria que ficar esse retorno?

romarcio

Da uma olhada nesse tutorial: JDBC com Banco de Dados Standalone

R

Finalmente depois de 6 horas quebrando a cabeça consegui resolver aqui, obrigado pelo artigo

segue as duas classes como ficou

Classe ConexaoBD
package pct_bd_escola;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;

import javax.swing.JOptionPane;

public class ConexaoBD 
{	
	public Connection con ;
	public Connection getConexao()
	{
		try
		{	 
			String driverMYSQL = "com.mysql.jdbc.Driver"; 
			String URL = "jdbc:mysql://localhost:3306/bd_escola"; 
			String USUARIO= "unip"; 
			String SENHA = "unip"; 
			Class.forName(driverMYSQL); 
			con = DriverManager.getConnection(URL, USUARIO, SENHA);
		} 
		catch(ClassNotFoundException erro1) 
		{ 
			erro1.printStackTrace(); 
		} 
		catch(SQLException erro2) 
		{ 
			throw new RuntimeException(erro2);  
		} 
		return con;
	}
	public void closeConexao() 
	{
		try
		{
		con.close();
		}
		catch(SQLException error)
		{
			throw new RuntimeException(error); 
		}
	}
}
Classe Cadastrar
package pct_bd_escola;

import java.sql.*;
import java.sql.PreparedStatement;

import javax.swing.JOptionPane;

public class Cadastrar 
{
	public static void main(String[] args)
	{
		ConexaoBD conexao = new ConexaoBD();
		Connection con;
		try
		{
		con = conexao.getConexao();
		String sql = "INSERT INTO tb_aluno ( id_aluno, nm_aluno, mat_aluno,cpf_aluno) VALUES (1189,'Ademir Cruz',889978,223333)";
		PreparedStatement stmt = con.prepareStatement(sql);
		stmt.executeUpdate();
		stmt.close();
		conexao.closeConexao();
		}
		catch(SQLException e)
		{
			e.printStackTrace();
		}
	
	}

}
Criado 18 de novembro de 2012
Ultima resposta 18 de nov. de 2012
Respostas 4
Participantes 2