Verificar a existência de um Banco SQL. Ajuda

a Exception :

Exception in thread "main" java.lang.NullPointerException at DAO.contatoDAO.criarTabela(contatoDAO.java:92) at DAO.contatoDAO.insert(contatoDAO.java:22) at sysi.Main.main(Main.java:43) Java Result: 1

galera ja tentei de tudo e continua dando erro… vo postar as classes

[code]package Conexao;

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

/**
*

  • @author Igor Gottschalg
    */

public class CriaConexao {

public static Connection getConexao() throws SQLException {
    try {
        Class.forName("com.mysql.jdbc.Driver");
        System.out.println("Conexao estabelicida");
        return DriverManager.getConnection("jdbc:mysql://localhost/sysi", "root", "gotts32");
    } catch (ClassNotFoundException e) {
        throw new SQLException(e.getMessage());
    }        
}

}[/code]

[code]package DAO;

import Conexao.CriaConexao;
import Objeto.contato;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;

/**
*

  • @author Igor Gottschalg
    */
    public class ContatoDAO {

    private Connection conexao;

    public void ContatoDAO() throws SQLException {
    this.conexao = CriaConexao.getConexao();
    }

    public void insert(contato c) throws SQLException {
    criarTabela();
    String sql = “INSERT INTO agenda (nome,endereco,telefone,email,webpage,comentario) VALUES (?,?,?,?,?,?)”;
    PreparedStatement stmt = conexao.prepareStatement(sql);
    stmt.setString(1, c.getNome());
    stmt.setString(2, c.getEndereco());
    stmt.setString(3, c.getTelefone());
    stmt.setString(4, c.getEmail());
    stmt.setString(5, c.getWebpage());
    stmt.setString(6, c.getComentario());
    stmt.execute();
    stmt.close();
    }

    public void update(contato c) throws SQLException {
    String sql = “UPDATE agenda SET nome=?, endereco=?, telefone=?, email=?, webpage=?, comentario=? WHERE id=?”;
    PreparedStatement stmt = conexao.prepareStatement(sql);
    stmt.setString(1, c.getNome());
    stmt.setString(2, c.getEndereco());
    stmt.setString(3, c.getTelefone());
    stmt.setString(4, c.getEmail());
    stmt.setString(5, c.getWebpage());
    stmt.setString(6, c.getComentario());
    stmt.setInt(7, c.getId());
    stmt.execute();
    stmt.close();
    }

    public void delete(contato c) throws SQLException {
    String sql = “DELETE FROM agenda WHERE id=?”;
    PreparedStatement stmt = conexao.prepareStatement(sql);
    stmt.setInt(1, c.getId());
    stmt.execute();
    stmt.close();
    }

    public List getlist(String search) throws SQLException {
    String sql = “SELECT * FROM agenda WHERE nome LIKE ?”;
    PreparedStatement stmt = conexao.prepareStatement(sql);
    stmt.setString(1, search);
    ResultSet rs = stmt.executeQuery();

     List<contato> mylist = new ArrayList<contato>();
    
     while (rs.next()) {
         contato c1 = new contato();
         c1.setNome(rs.getString("nome"));
         c1.setEndereco(rs.getString("endereco"));
         c1.setTelefone(rs.getString("telefone"));
         c1.setEmail(rs.getString("email"));
         c1.setWebpage(rs.getString("webpage"));
         c1.setComentario(rs.getString("comentario"));
         mylist.add(c1);
     }
     rs.close();
     stmt.close();
     return mylist;
    

    }

    public void criarTabela() throws SQLException {
    String sql = “CREATE TABLE IF NOT EXISTS agenda (id INT(11) NOT NULL AUTO_INCREMENT,nome VARCHAR (100),endereco TEXT,telefone TEXT,email VARCHAR (100),webpage VARCHAR (100),comentario VARCHAR (250),PRIMARY KEY (id))”;
    Statement s = conexao.createStatement();
    s.execute(sql);
    s.close();
    }
    }[/code]

Oi,

As vezes o problema está no banco e não no código,que banco vc usa…

to usando o [color=red]MYSQL[/color]
mas o estranho que no metodo main eu verifico se o banco existe, e se não ele cria o banco. Isso ta funcionando, mas na depois quando vo conectar para fazer qualquer operação ele da erro, de ponteiro nulo…é muito estranha…pq ele faz uma conexao certa, e a outra da erro

Desculpe mas nunca usei mysql,achei estranho os seus campos tipo text por isso perguntei,mas deve ser do mysql. :roll:

Mas banco as vezes da trabalho mesmo,vc já tem dados inseridos se não tiver,insere alguns direto no banco e testa novamente…

blz…ainda não tinha tentado… vo inserir e depois posto aki o resultado…vlw

O problema é que não se declara tipo de retorno em construtor. Portanto seu objeto contatoDAO deve estar sendo construído com o construtor padrão, deixando sua variável conexão com ponteiro nulo, por isso a exceção.

Retire o tipo de retorno do seu construtor

public ContatoDAO() throws SQLException { //Retire a declaração void this.conexao = CriaConexao.getConexao(); }

Eric Yuzo deu certo… eu nem tinha percebido isso, vlw pela ajuda…

Galera agora estou com outro problema…
Tenha uma jTabbedPane com várias abas, com as letras do alfabeto.

dentro de cada aba tenha um jLabel com o nome de jA (até jA24).

preciso que quando eu clicar na aba ele altere o texto da jLabel correspondente da aba.

pensei nisto

jTabbedPane1.getComponentAt(jTabbedPane1.getSelectedIndex()).getName();

da certo?