#java #android #mysql
#java #Android #mysql
Вопрос:
Я сталкиваюсь с этой проблемой сбоя канала связи при подключении моего приложения Android к удаленной базе данных mysql.
Используемый файл JAR: mysql-connector-java-5.1.31-bin
Информация об удаленном sql: innodb_version: 1.0.17-13.3
protocol_version: 10 версия: 5.1.62-rel13.3-журнал
version_comment: Percona Server (GPL), 13.3, редакция 435
version_compile_machine: x86_64
version_compile_os: неизвестно-linux-gnu
Я попытался использовать mysql workbench для подключения к удаленной базе данных, и это работает отлично. Но в моем приложении для Android я получаю сбой канала связи. Я не думаю, что что-то не так с моими настройками подключения, поскольку они те же, что я использую в workbench или для подключения через терминал (на Mac и это работает).
Кроме того, я думаю, что драйвер jdbc, который я использую, тоже в порядке. Кто-нибудь может внести какие-либо другие предложения относительно того, в чем может заключаться проблема?
Вот полное исключение:
07-07 02:59:10.568: D/QueryException(1745): Exception in connection Communications link failure
07-07 02:59:10.568: D/QueryException(1745): The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
Вот часть кода, вызывающая исключение в Logcat:
connection = DriverManager.getConnection("jdbc:mysql://<hostname_goes_here>/<database_name>","<username>","<password>");
if(connection!=null){
Log.d("Connecting to remote server", "Remote sql server connection successful");
}
else{
Log.d("Connection failure", "Could not connect to remote sql server with host " hostName);
}
} catch(Exception e){
Log.d("QueryException","Exception in connection " e.getMessage());
System.out.println("Caught exception while connecting to database " e);
e.printStackTrace();
}
Комментарии:
1. Вы видите попытку подключения на стороне сервера? Могут ли подключаться другие устройства (например, ПК) в той же сети? Сначала устраните подобные сетевые проблемы. Кроме того, прямое подключение к базе данных с мобильного устройства считается очень плохой идеей с точки зрения безопасности, для этого требуется разрешить доступ к серверу с любого IP. Обычно требуется промежуточный веб-сервис, чтобы вы могли отключить свой веб-сервер брандмауэром.
2. @GabeSechan Я написал базовый класс подключения Java, чтобы попытаться подключиться к удаленной базе данных и выполнить запрос, и все работает нормально! Но по какой-то причине мой код Android не работает и выдает сбой канала связи.