Estou tendo o seguinte problema, preciso conectar a aplicação Java em um banco de dados MySQL que está hospedado na Hostgator. Na Hostgator já configurei o MySQL remoto e consigo acessá-lo através do MySQL Workbench e abri a porta 3306 no meu roteador.
Na aplicação Java inclui o driver MySQL e crie a classe de conexão, passando o endereço IP do servidor, nome do banco de dados, usuário e senha. Consigo gerar a conexão e ao realizar a consulta no banco sempre é retornado null.
Testei o mesmo código através do XAMPP e funcionou perfeitamente.
Olhei alguns post aqui no fórum referente a este tema, mas até o momento não consegui resolver o problema.
primeira coisa, veja se no painel da sua hospedagem, nao precisa liberar o IP que vai acessar o banco, caso precise, tem que liberar.
segunda coisa, geralmente o usuario da hospedagem nao acessa direto o banco, voce precisa criar um usuario so para essa base de dados.
terceiro, confirme a versao do banco de dados da hospedagem, se for a versao 8 tem uma diferenca na url do driver.
eu tenho um banco na integrator, que é acessado sem problema pelo heroku e outra base de dados que eu acesso da minha maquina para testes, e funciona numa boa. Uso spring-boot e nodejs
A
adenilson_p
*O IP já está liberado no painel da hospedagem. Consigo acessar o banco do meu PC pelo MySQL Workbench.
*O usuário somente para acessar o banco de dados já foi criado é com este usuário que estou tentando acessar através do Java.
*A versão do MySQL no servidor da hospedagem é o 5.7.31. Estou utilizando a seguinte URL na classe de conexão: jdbc:mysql://ip-do-servidor:porta/banco-de-dados.
*No projeto inclui a biblioteca do driver JDBC do MySQL.
M
maikonzinho
Estou exatamente com o mesmo problema, meu site e base de dados estão hospedados no Alphaservers.
M
maikonzinho
Como vc conseguiu acessar pelo Workbanch? eu tentei e não consegui.
T
thimor
voce esta referenciando o driver da classe como?
M
maikonzinho
Não entendi.
A
adenilson_p
Estou utilizando essa classe para fazer a conexão com o banco de dados:
publicclassConnectionManagerMySQLWebinar{publicstaticStringstatus="Não conectou...";publicConnectionManagerMySQLWebinar(Stringservidor){}//Método de Conexão//publicstaticjava.sql.ConnectiongetConexaoMySQL()throwsSQLException{Connectionconnection=null;try{// Carregando o JDBC Driver padrãoStringdriverName="com.mysql.jdbc.Driver";Class.forName(driverName);StringserverName="192.168.254.197:3306";Stringmydatabase="nome_banco";Stringurl="jdbc:mysql://"+serverName+"/"+mydatabase;Stringusername="usuario_banco";Stringpassword="senha_banco";connection=DriverManager.getConnection(url,username,password);returnconnection;}catch(ClassNotFoundExceptione){System.out.println("O driver expecificado nao foi encontrado.");returnnull;}catch(SQLExceptione){System.out.println("Nao foi possivel conectar ao Banco de Dados.");returnnull;}}publicstaticStringstatusConection(){returnstatus;}publicstaticbooleanFecharConexao(){try{ConnectionManagerMySQLWebinar.getConexaoMySQL().close();returntrue;}catch(Exceptione){returnfalse;}}publicstaticjava.sql.ConnectionReiniciarConexao()throwsException{FecharConexao();returnConnectionManagerMySQLWebinar.getConexaoMySQL();}}
E no service crio a conexão da seguinte forma: Connection conn = ConnectionManagerMySQLWebinar.getConexaoMySQL();
Essa conexão passo como parâmetro para o DAO ao realizar a consulta. Coloquei apenas alguns trechos do método aqui.
Se pelo Workbench esta tudo certo e sempre esta retornando null pelo Jdbc, supoe que esta parando no caminho.
Mas pode sim ser problema de versao do Jdbc.
Qual a versao do Java ?
Qual a versao do driver Jdbc ?
A
adenilson_p
Estou utilizando o Java 1.8.0_261 e o driver JDBC está na versão 5.1.23.
J
j-menezes
Pode ser a versão mesmo.
M
maikonzinho
já consegui estabelecer a conexão com o banco e o Workbanch, mas ainda não consegui pelo app também.
T
Solucao aceita
thimor1 like
vamos la, primeiro atualize esse driver do mysql mysql driver
jdbc:mysql://ip-do-servidor:porta/banco-de-dados?useSSL=false
veja se apenas assim funciona.
cola tambem o erro do console que esta dando quando voce tenta a conexao.
A
adenilson_p
Deu certo, era problema com a versão do driver. Atualizei o consegui acessar os dados.
M
maikonzinho
Atualizei, mas agora apareceu outro erro.
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.mmempresa, PID: 10917
java.lang.NoSuchMethodError: No static method metafactory(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite; in class Ljava/lang/invoke/LambdaMetafactory; or its super classes (declaration of ‘java.lang.invoke.LambdaMetafactory’ appears in /apex/com.android.runtime/javalib/core-oj.jar)
Estou usando o seguinte código:
publicclassdbMySQLextendsActivity{privateConnectionconn=null;privateStatementst;privateStringsql;privateResultSetrs;publicvoidconectarMySQL(Stringhost,Stringporta,Stringbanco,Stringusuario,Stringsenha){try{Class.forName("com.mysql.jdbc.Driver").newInstance();}catch(Exceptionerro){Log.e("MYSQL","Erro: "+erro);}try{conn=DriverManager.getConnection("jdbc:mysql://"+host+":"+porta+"/"+banco+"?useSSL=false",usuario,senha);Log.i("MYSQL","Conectado.");}catch(Exceptionerro){Log.e("MYSQL","Erro: "+erro);}}publicvoiddesconectarMySQL(){try{conn.close();Log.i("MYSQL","Desconectado.");}catch(Exceptionerro){Log.e("MYSQL","Erro: "+erro);}}publicvoidqueryMySQL(){try{st=conn.createStatement();sql="SELECT * FROM usuario";rs=st.executeQuery(sql);rs.first();Log.i("MYSQL","Resultado: "+rs.getString("cpf"));}catch(Exceptionerro){Log.e("MYSQL","Erro: "+erro);}}}
M
maikonzinho
Adenilson, me mostra como tá seu código, por gentileza.
T
thimor
voce esta usando esse driver do mysql numa aplicacao android?
ou entao a versao que voce esta usando do java pode ser mais antiga.
M
maikonzinho
Isso.
mas eu já testei com 2 versões do mysql:
mysql-connector-java-5.1.15
mysql-connector-java-8.0.21 (mais atual)
todas as duas deram erro!
T
thimor
acredito que esse driver para android nao funcione.
W
Winicius_Leal1 like
O meu problema era justamente esse SSL, assim que coloquei conforme você exemplificou deu certo, obg!