Conexão com o banco de dados Alphaservers

Estou desenvolvendo um app, mas não estou conseguindo me conectar com o banco de dados hospedado no Alphaservers. Estou usando o JDBC. Já tentei colocar as portas 3306, 80, 2083, 443 e nenhuma deu certo.
Aparece o seguinte erro:
E/MYSQL: Erro: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

Segue o Código abaixo:

public void conectarMySQL(String host, String porta, String banco, String usuario, String senha){
    try{
        Class.forName("com.mysql.jdbc.Driver").newInstance();
    }catch(Exception erro){
        Log.e("MYSQL","Erro: "+erro);
    }

    try{
        conn=DriverManager.getConnection("jdbc:mysql://"+host+":"+porta+"/"+banco,usuario,senha);
        Log.i("MYSQL","Conectado.");
    }catch(Exception erro){
        Log.e("MYSQL","Erro: "+erro);
    }
}

Nesse Alphaservers, a instalação do mysql eh vc quem fez?

Alphaservers é a empresa que está hospedado meu site, servidor online. minha base de dados está lá também, ela dispõe do phpmyadimin.
Link: https://www.alphaservers.com.br/

Eu já havia criado um site em PHP, e consigo realizar todas as operações com o banco usando o código abaixo. Agora estou criando um app onde quero acessar a mesma base de dados, mas não estou conseguindo.

<?php
//conexão com o banco utilizando PDO
function conectar(){

try{
 $pdo = new PDO("mysql:host=localhost;dbname=db_cei", "fulano_de_tal", "beltrano123");

}catch(PDOException $e){
echo $e->getMessage();
}
return $pdo;
}
?>

Está habilitado acesso remoto na hospedagem?

Sim! e fiz isso no Cpanel, foi gerado um IP automaticamente para acessarmos por meio dele.

1 curtida

Ok entao. No MySql Workbench funciona passando os mesmos parâmetros?

Não consegui conectar com o MySql também.

Então nem se preocupe com Java no momento. Resolve primeiro com o suporte dessa hospedagem pra saber por que não está conseguindo se conectar remotamente ao banco, já que você falou que está habilitado.

Blza, vou fazer isso.

Pronto! eu consegui me conectar ao banco usando o Workbanch. Mas agora minha base de dados está hospedada no HostGator. :smile:
Falta só conectar pelo app.

A mensagem de erro mudou?

Sim.
eu atualizei o drive do MySql connector para o “mysql-connector-java-8.0.21”, está aparecendo a mensagem de erro abaixo:

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)

Meu código é esse:

    public class dbMySQL extends Activity{

   private Connection conn = null;
   private Statement st;
   private String sql;
   private ResultSet rs;

public void conectarMySQL(String host, String porta, String banco, String usuario, String senha){
    try{
        Class.forName("com.mysql.jdbc.Driver").newInstance();
    }catch(Exception erro){
        Log.e("MYSQL","Erro: "+erro);
    }

    try{
        conn=DriverManager.getConnection("jdbc:mysql://"+host+":"+porta+"/"+banco+"?useSSL=false",usuario,senha);

        Log.i("MYSQL","Conectado.");
    }catch(Exception erro){
        Log.e("MYSQL","Erro: "+erro);
    }
}

public void desconectarMySQL(){
    try {
        conn.close();
        Log.i("MYSQL","Desconectado.");
    } catch (Exception erro) {
        Log.e("MYSQL","Erro: "+erro);
    }
}

public void queryMySQL(){
    try{
        st=conn.createStatement();
        sql="SELECT * FROM usuario";
        rs=st.executeQuery(sql);
        rs.first();
        Log.i("MYSQL","Resultado: "+rs.getString("cpf"));
    } catch (Exception erro){
        Log.e("MYSQL","Erro: "+erro);
    }
}}

Cara, tu quer conectar no MySql diretamente pelo Android? Ideal é ter um backend e fazer chamadas via web services, seguindo REST por exemplo.

Então não dá dessa forma que estou querendo?
Tem algum link pra eu ter uma base de como faz isso…?

Lembrei, já tentei fazer dessa forma, mas não consegui também.
coloquei os arquivos em PHP na hospedagem pra conectar e realizar consultas, mas sem sucesso.

Nao sei se dá ou não, mas todo mundo que vejo tentar desiste. É uma solução bizarra, além de expor a porta do banco de dados na internet.

Sobre PHP, qual mensagem de erro deu? Seu backend poderia ser em PHP tranquilamente.

Tem algum link pra eu me basear?

No PHP basicamente é fazer a consulta SQL no banco MySql e retornar a resposta do resultset em json:

No Android consome a resposta em json que vai vir da url do seu PHP ou qualquer backend

Blza.
surgiu uma dúvida.
já que os códigos de consulta, inserção e exclusão de dados vão estar nos arquivos armazenados na hospedagem, então qualquer pessoal pode criar um app pra fazer requisição e execução desses códigos, certo? visto que os dados de conexão com o banco (usuário e senha) estarão nesses arquivos.

Quando eu estava tentando fazer assim… eu pensei nisso.
onde está a segurança se eu desenvolver dessa maneira?