Conexão Java + MySQL + Netbeans

Olá,

Sou novato em Java e em programação e estou tentando fazer um programa com interface gráfica com um CRUD simples, poucos dados.

O problema é que estou meio sem referência e estou tentando juntar um CRUD que salva na memória com um código que tenho e que funciona de uma conexão JAVA + MySQL.

Mas essa junção está complicada de fazer funcionar…

Se alguém puder dar uma ajuda.

Ele faz a conexão(essa conexão funciona) e retorna uma String pro código principal se conseguiu conectar ou não ao banco de dados. Só isso. Mas não está funcionando. Está dando erro.

    package standard;

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


    public class bd {
        
        Connection connection = null;  
        String conexao;
        public String Conexao()
        {
        try
        {
           Class.forName("com.mysql.cj.jdbc.Driver");
           String serverName = "localhost:3306";  
           String mydatabase = "test";  
           String url = "jdbc:mysql://localhost:3306/test?serverTimezone=UTC";// + serverName +  "/" + mydatabase; // a JDBC url  
           String username = "root@localhost";  
           String password = ""; 
           
           try
           {
              connection = DriverManager.getConnection(url, username, password); 
              
              System.out.println("Conexao possivelmente com sucesso");
              if(connection != null)
              {
                  conexao = "Connected";
              }
              else
              {
                  conexao = "Error connecting";
              }
           }
           catch(SQLException e)
           {
              e.printStackTrace();
           }
        }
        catch(ClassNotFoundException e)
        {
           // Could not find the database driver
           System.out.println("Erro. Mensagem 1. Não foi possível conectar ao banco de dados."); 
           return conexao;       
        }
        
        return conexao;
        } 
    }

No código principal, na criação do form eu declaro uma variável dessa classe bd:

bd bancoDeDados;
String textoConexao = "";

E no código principal abaixo do initComponents():

 public FormPrincipal() {
        initComponents();
        textoConexao = bancoDeDados.Conexao();  //   <-- Essa linha da erro
}

Quando tento executar, retorna um erro:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
	at standard.FormPrincipal.<init>(FormPrincipal.java:45)
	at standard.FormPrincipal$8.run(FormPrincipal.java:406)
	at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756)
	at java.awt.EventQueue.access$500(EventQueue.java:97)
	at java.awt.EventQueue$3.run(EventQueue.java:709)
	at java.awt.EventQueue$3.run(EventQueue.java:703)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:726)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

Não sei ainda como resolver. Mas estou tentando. Se alguém mais experiente bater o olho e souber o que pode ser eu agradeço.

Lembrando que sou novato em programação e meu código pode não ser o melhor dos códigos, mas a intenção é fazer um CRUD com interface gráfica funcionar. A interface e o CRUD salvando na memória funciona. E o código da conexão sozinho também funciona e conecta ao banco de dados. Falta juntar os dois agora, começando por essa conexão que não consegui ainda.

Obrigado por qualquer ajuda.

3 coisas.

  1. Convenção de classe. A primeira letra de cada palavra do nome da classe é maiúsculo. Ex.: BancoDeDados, LeitorDeXml etc… Esse padrão é chamado CamelCase.

  2. Na verdade o erro em bancoDeDados.Conexao() indica que algo ocorreu dentro do método conexao, quando for assim é sempre ir seguindo o stack para ver a origem.

  3. Acredito que o seu problema esteja no nome de usuário. Está escrito root@localhost. O nome de usuário é provavelmente root. Quando ele diz root@localhost ele se refere usuário root se conectando ao localhost.