Statement para criar novo banco de dados

4 respostas
xxabxx

Boa tarde Galera.
Já procurei no google mas não achei muita coisa relacionada a isto.
Seguinte preciso fazer um projeto de administração de um banco de dados, primeiramente estou fazendo um campo para o usuario somente digitar o nome do banco que ele deseja criar

CLASSE BancoDao

public void criarBanco(Banco criarBanco) throws SQLException {
      PreparedStatement stmt = this.connection.prepareStatement("CREATE DATABASE ?");
        stmt.setString(1, criarBanco.getCreate());
        stmt.executeUpdate();
        stmt.close();

CLASSE COM O SWING

public void CriarBanco() {
         Banco banco = new Banco();
          banco.setCreate(jTBanco.getText());
     
        try {
            BancoDao dao = new BancoDao();
            dao.criarBanco(banco);
        } catch (SQLException ex) {
            Logger.getLogger(admBanco.class.getName()).log(Level.SEVERE, null, ex);
        }

      }

Testei usar stmt.execute e também sem resultado

Erro que está dando é o seguinte: java.lang.NullPointerException

4 Respostas

drsmachado

NullPointer não é acusado quando você executa uma query sem sucesso.
Há alguma coisa errada…
Ou o connection ou o PreparedStatement ou o objeto que está passando não foi instanciado (ou seja, nulo).

Aliás, em qual linha está sendo apontado o null pointer?

xxabxx

Linha 02 da primeira classe = PreparedStatement stmt = this.connection.prepareStatement(“CREATE DATABASE ?”);

Linha 07 da segunda classe = dao.criarBanco(banco);


Exception in thread “AWT-EventQueue-0” java.lang.NullPointerException

at AdmBanco.BancoDao.criarBanco(BancoDao.java:26)

at AdmBanco.admBanco.CriarBanco(admBanco.java:177)
drsmachado

Então, camarada.
possivelmente o connection esteja como null.
Se não quer postar a classe inteira, faça 2 coisas, 1 debugar. 2 reveja o método que cria o connection.
Algo que pode ajudar é trocar o maldito throws SQLException por um bendito try/catch

xxabxx

Classe Conecta

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package AdmBanco;

/**
 *
 * @author Administrador
 */
/* Integrantes:
Eduardo Gazal ? RA 025303/10-1
Felipe Gomes ? RA 06366/09-3
Fernando Apolinário?RA 061203/10-8
José Carlos ? RA  01812/10-1

 *
 */

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

/**
 *
 * @author Manutenção D2
 */
public class Conecta {

    public static Connection getConnection() throws SQLException  {



        // Local do driver + configurações do banco de dados

          return DriverManager.getConnection("jdbc:mysql://localhost:3309/mysql", "root", "senha10");

    }
}

Classe BancoDao

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package AdmBanco;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;

/**
 *
 * @author Felipe Gomes
 */
public class BancoDao {

    private Connection connection;

    void conecta() throws SQLException  {
            this.connection = Conecta.getConnection();
        
    }

    public void criarBanco(Banco criarBanco) throws SQLException  {
          PreparedStatement stmt= this.connection.prepareStatement("CREATE DATABASE ?");  
   stmt.setString(1, criarBanco.getCreate());
        stmt.executeQuery(); // comando para executar o sql
        stmt.close(); // fecha a conexão com o banco
 }


}

Classe admBanco

private void jBCriarActionPerformed(java.awt.event.ActionEvent evt) {                                        
       
            CriarBanco();
       
    }     
                 
  void CriarBanco() throws SQLException {
       Banco banco = new Banco();

      banco.setCreate(jTBanco.getText());


            BancoDao dao = new BancoDao();
            dao.criarBanco(banco);
       

    }

  public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new admBanco().setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify                     
    private javax.swing.JButton jBCriar;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JTextField jTBanco;
    private javax.swing.JTextField jTextField1;
    private javax.swing.JTextField jTextField2;
    // End of variables declaration                   

}
Criado 27 de junho de 2011
Ultima resposta 27 de jun. de 2011
Respostas 4
Participantes 2