[RESOLVIDO]Conexão do Banco de Dados com Java

Posta o conteúdo do arquivo Manifest do seu jar.

do jar do Connection/j? do myql?

Do seu jar.

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

public class PrincipalTest1 {
    public static void main(String[] args) throws SQLException, ClassNotFoundException {
        Class.forName("com.mysql.jdbc.Driver");
        Connection conexao = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/dbloja", "novoroot", "0123456");
        System.out.println("Conectou!");
        conexao.close();
    }
}

Esse nao é o arquivo manifest. Seria bom saber se realmente seu jar está sendo gerado pelo Java 8 (1.8). Uma prova seria através do arquivo MANIFEST.MF.

Boa noite
Se não me engano, a partir da versão 8 do MySQL a classe Driver é:

“com.mysql.cj.jdbc.Driver”

Seguindo seus códigos a conexão ocorre sem problemas.
Porém, a orientação do manual do MySQL 8 indica que se use a seguinte forma para a URL de acesso ao BD:

“jdbc:mysql://127.0.0.1:3306/dbloja?useSSL=false”

Eu criei 2 projetos um usando o mysql-connector-java-8.0.13.jar e o erro desse é:

Exception in thread “main” java.lang.UnsupportedClassVersionError:
com/mysql/jdbc/Driver :
Unsupported major.minor version 52.0

o outro eu coloquei o Driver JDBC do MySQL - mysql - connector - java - 5.1.23-bin.jar que da esse erro:

Exception in thread “main” java.sql.SQLException:
java.lang.ClassCastException:
java.math.BigInteger cannot be cast to java.lang.Long

eu fiz o que vc disse e mesmo assim ta dando os mesmos erros

Onde eu encontro esse MANIFEST.MF?

Extrai os arquivos do seu .jar (renomeia pra .zip), fica numa pasta META-INF.

mas que .jar?
eu não criei nenhum jar

Nunca fez deploy de uma aplicacao Java? Exportar pra jar ou war?

tipo, eu sei como exportar o arquivo, mas eu não fiz nada disso, eu só to executando pela IDE, o netbeans, eu não fiz nada pra exportar o arquivo nem nada, ta tudo em .java ainda

Compila pra ter o manifest ou exporta o .jar. É só pra obter uma informação, mas se não achar necessário e garante que o Netbeans está configurado pro Java 8, não precisa.

pior que agr que vc falou, acho q não, em bibliotecas ele ta com JDK 1.7, como mudo isso?

Consegui mudar, agr ta dando outros erros, vou colocar aqui

O que usa o Driver JDBC:

Exception in thread "main" java.sql.SQLException: java.lang.ClassCastException: java.math.BigInteger cannot be cast to java.lang.Long
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1074)
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:988)
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:974)
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:919)
	at com.mysql.jdbc.ConnectionImpl.buildCollationMapping(ConnectionImpl.java:1062)
	at com.mysql.jdbc.ConnectionImpl.initializePropsFromServer(ConnectionImpl.java:3556)
	at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2513)
	at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2283)
	at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:822)
	at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
	at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
	at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:404)
	at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:317)
	at java.sql.DriverManager.getConnection(DriverManager.java:664)
	at java.sql.DriverManager.getConnection(DriverManager.java:247)
	at PrincipalTest1.main(PrincipalTest1.java:14)
Caused by: java.lang.ClassCastException: java.math.BigInteger cannot be cast to java.lang.Long
	at com.mysql.jdbc.ConnectionImpl.buildCollationMapping(ConnectionImpl.java:1007)
	... 15 more
Java Result: 1

O que usa o .jar:

Exception in thread "main" java.sql.SQLNonTransientConnectionException: Public Key Retrieval is not allowed
	at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:110)
	at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97)
	at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)
	at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:835)
	at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:455)
	at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:240)
	at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:207)
	at java.sql.DriverManager.getConnection(DriverManager.java:664)
	at java.sql.DriverManager.getConnection(DriverManager.java:247)
	at PrincipalTest.main(PrincipalTest.java:14)
Java Result: 1
CONSTRUÍDO COM SUCESSO (tempo total: 1 segundo)

Boa, já passamos daquele problema. Debuga e posta todo código envolvido com o problema. Aponta tambem a linha que deu o erro.

Ideal mesmo seria encerrar esse tópico e abrir um novo.

ok, mas agr eu vo ali fora, que eu vo ver umas parada do meu curso, além disso o código todo que eu fiz, é aquele ali em cima mesmo, o problema ta na hora de pegar a conexão se não me engano, é no getConnection

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

public class PrincipalTest1 {
    public static void main(String[] args) throws SQLException, ClassNotFoundException {
        Class.forName("com.mysql.jdbc.Driver");
        Connection conexao = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/dbloja", "novoroot", "0123456");
        System.out.println("Conectou!");
        conexao.close();
    }
}

Tem um tópico que relata esse tipo de problema: [RESOLVIDO] Conexão com a aplicação e o banco

Tem que usar um conjunto compatível, SO, Java, MySQL Server e driver jdbc/Connector.

CARACA VÉI FOIIII, kkkkkkk eu resolvi usar o mysql-connector-java-8.0.13.jar ai depois que deu esse erro:

Exception in thread “main” java.sql.SQLNonTransientConnectionException:
Public Key Retrieval is not allowed

eu fui e pesquisei e encontrei uma solução que foi pq eu escrevi uma parada errada que era pra ficar true e eu botei false, então corrigi e deu um erro de Time zone, então pesquisei de novo e corrigir, era tudo no URL do banco, no final ficou assim o código:

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

public class PrincipalTest {
    public static void main(String[] args) throws SQLException, ClassNotFoundException {
        Class.forName("com.mysql.cj.jdbc.Driver");
        Connection conexao = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/dbloja?useSSL=true&useTimezone=true&serverTimezone=UTC", "root", "Sali031297");
        System.out.println("Conectou!");
        conexao.close();
    }
}

O meu Netbeans é o 8.0.2, o meu MySQL é 8.0.13 o conector usado tbm é 8.0.13 e o meu Sistema Operacional é Windows 10 Home.

Na moral, to muito feliz, to a mais de 2 semanas querendo aprender a fazer as interações de BD com Java e por conta desse erro eu não conseguia, na moral kkkkkkk vlw pela ajuda glr, vcs me ajudaram muito me explicando fala ndo o que cada uma sabia e pensava que poderia ser o erro, aprendi muito com vcs. Que Deus abençoe a todos.

3 curtidas

isso realmente é a solução. Funcionou para mim.