Como funciona a conexão com Mysql no Android?

Se você quer receber alguma exceção, tem que logar. No momento vc esta apenas retornando false caso de algum erro.

public static boolean connect(){
        try {
            conn = DriverManager.getConnection("jdbc:mysql://192.168.1.102/app_formatura?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC", "app_formatura", "KAVeCOjE");
            return true;
        } catch (SQLException e) {
            return false;
        }
    }

Você esta conseguindo obter a conexão?

Sem conexão, não tem como executar queries.

Aqui onde? Não vi o erro, nem em qual linha de código ocorre.

Eu postei antes a exceção que está resultando. conn está sendo nula quando tento acessar. Bem, é obvio que o método está retornando false porque tem algo de errado na conexão. O problema é que mesmo colocando um e.printStackTrace(), nada é mostrado. Pelo menos eu sei que tem algo de errado na conexão. Agora eu estou me conectando com a porta junto. 192.168.1.102:3306. E como já citei, realizei o procedimento citado pelo @javaflex. E não recebo mais erros de falta de permissão quando tento me conectar pelo navegador.

E quando eu tento me conectar pelo navegador agora…dá nisso aí:

Pois então, eu desconfio que esse seja meu problema.

Não tem nada de código meu. Desconfio que tu nem tenha lido o que o @javaflex falou, estou certo? É o seguinte, ele me disse uma maneira de evitar o erro de permissão. Então eu segui os passos e agora não tem mais esse erro. Mas tem outro, que é o que eu postei agora a pouco.

Sobre esse erro outro não sei o que pode ser. Mas um conselho, levando em consideração que “precisa terminar logo”, com o tempo que está perdendo nisso já teria feito um simples serviço em PHP (sem frameworks) só para postar e responder dados do MySql via HTTP a partir desse seu servidor, onde elimina teu problema de conexão remota.

Não, só perderia mais tempo ainda, não sei quase nada de PHP.

Se tu programava em Java, PHP é infinitamente mais fácil, além de ter uma infinidade de exemplos, um deles: http://www.codingcage.com/2016/04/how-to-convert-mysql-rows-into-json.html

1 curtida

É, realmente é fácil. Mas o problema é que eu realmente não sei como implementar isso no Java. É bem organizado utilizar webservice, mas isso realmente resolveria meu problema? Ou só ajudaria a organizar o projeto? Lembrando que eu não consigo me conectar nem pelo navegador.

Não é questao de organizacao, mas de eficiencia, dependendo do cenário como já tinha falado.

Ao contrário do que você está fazendo, isso é mais comum e mais difundido na plataforma Android, o que torna a solução de problemas mais fácil. Se pesquisar acha fácil vários exemplos pra consumir json via HTTP no Android, como este: https://www.codeproject.com/Articles/267023/Send-and-receive-json-between-android-and-php

Poxa, eu só quero executar minha aplicação. Preciso dela funcionando o quanto antes, vai ser muito útil pra mim. Eu sou quase que completamente leigo no assunto, e não estou em condições de me aprofundar agora. Futuramente eu vou botar esse banco num servidor, mas por enquanto, eu só quero testar meu APP, nada mais nada menos. Só que o localhost não funciona porque eu tô executando em um dispositivo de verdade. Alguma outra ideia?

[quote=“Thallysson, post:51, topic:345534, full:true”]Futuramente eu vou botar esse banco num servidor, mas por enquanto, eu só quero testar meu APP, nada mais nada menos. Só que o localhost não funciona porque eu tô executando em um dispositivo de verdade. Alguma outra ideia?
[/quote]
Como assim futuramente vai colocar o banco no servidor? Pelo que você está fazendo hoje, ele já está em um servidor, por mais que seja uma máquina qualquer.

Se quer acessar um banco local no Android, use SQLite, vai eliminar todos os seus problemas.

Eu preciso de um banco de dados em um servidor. É a minha primeira aplicação, ela é relativamente simples, não esperava tantos problemas.

Foi o que entendi inicialmente, então não seria futuramente.

Não é “relativamente simples” pois você está fazendo algo que a maioria não faz, então quando um problema aparece fica mais difícil encontrar solução dentro desse cenário. Não é como desktop JavaFx, se desligue desses vícios.

1 curtida

Apenas o navegador da Oracle tem suporte a API JDBC™.

Acredito que ele esteja se referindo ao acesso ao PHPMyAdmin, que é um administrador de bancos de dados MySQL para web, feito em PHP.
Por tudo o que ele está dizendo, o problema dele não é como Android e sim com o Xampp.
Aliás, dificilmente alguém faz sua primeira aplicação já fazendo interação com banco de dados em um servidor, diferente do localhost.

Obrigado, não sabia disso.[quote=“Luis_Augusto_Santos, post:56, topic:345534”]
Acredito que ele esteja se referindo ao acesso ao PHPMyAdmin, que é um administrador de bancos de dados MySQL para web, feito em PHP.
[/quote]

Eu tentei acessar pelo navegador assim: 192.168.1.102:3306. Mas se eu não botar a porta, abre o PHPMyAdmin normal (inclusive através de outro computador da mesma rede).

Exatamente. Pois eu não vi nenhuma exceção no meu projeto a não ser que a conn estava sendo nula.

Isso entra no que o @pfk66 disse. O MySQL não contém um servidor web, ou seja, você não vai conseguir acessá-lo pelo navegador diretamente. Ou utiliza algo como o PHPMyAdmin ou via console/prompt ou utiliza um GUI específico. Qualquer outra ação fora disso, apenas dentro de estruturas de linguagens de programação, como o JDBC.

Viu uma :stuck_out_tongue:
De qualquer forma, ou você resolve os problemas de configuração do xampp ou continuará perdendo tempo com questões como esta.
E, sim, pelo tempo que perdeu, teria facilmente subido uma aplicação em php ou mesmo em java para servir de webservice ao android e já teria resolvido o problema há tempos.

Se eu consigo acessar o PHPMyAdmin a partir de outro computador, isso não significa que meu servidor está funcionando normal? Se eu postasse aqui os arquivos de configuração do servidor ajudaria em algo?

Bem, na verdade eu não perdi tempo, pois enquanto eu não resolvia esse erro eu fiquei fazendo algumas coisas como Stored Procedures, mas enfim, não pude executar minha aplicação. E vou dizer novamente, não é nada assim. Imagina que uma pessoa com conhecimento quase nulo sobre redes, webservices e programação web se metesse a fazer algo? Demoraria bastante, e eu não tenho tempo.

Na verdade, não.
Existem códigos prontos para qualquer coisa desta natureza na internet, basta três ou quatro pesquisas.
Se você partisse para SpringBoot então, levaria 30 minutos para fazer.