Conexão com o banco de dados Alphaservers

20 respostas
M

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);
    }
}

20 Respostas

L

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

M

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/

M

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;
}
?>
J

Está habilitado acesso remoto na hospedagem?

M

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

J

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

M

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

J

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.

M

Blza, vou fazer isso.

M

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.

J

A mensagem de erro mudou?

M

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);
    }
}}
J

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

M

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

M

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.

J

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.

M

Tem algum link pra eu me basear?

J

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

M

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?

J

Usuário e senha de banco de dados estarão protegidos no servidor que contratou. Quem nao tem acesso ao servidor nao terá acesso a esses arquivos.

Da forma que você queria fazer, a senha do banco ficaria no app do celular de cada usuário, o que seria bem grave.

Já sobre segurança dos dados retornados ou postados via http, dá uma lida aqui:

https://blog.mandic.com.br/artigos/seguranca-em-apis-rest-parte-1/

Criado 23 de julho de 2020
Ultima resposta 31 de jul. de 2020
Respostas 20
Participantes 3