#android #sql-server
#Android #sql-сервер
Вопрос:
Я искал способ подключения приложения Android к SQL server. Пробовал разные коды и спрашивал многих программистов. Ничего не получилось. Похоже, проблема в URL-адресе подключения.
Приложение, которое я должен создать, включает в себя создание некоторых таблиц sql. Например, в начале ему необходимо сверить данные для входа, предоставленные пользователем, с этими данными в одной из этих таблиц. В дополнение к Android Studio мне было предложено установить и использовать SQL server Express (больше ничего).
Используя SQL server express 2008 R2, я создал базу данных на своем компьютере и таблицу. Подключение к серверу не сработало. Найденные мной коды всегда включали пароль и имя пользователя для подключения. Это обязательно? Я не получил имя пользователя для подключения при установке сервера. Для этого нужно было получить имя экземпляра и пароль.
Я искал информацию о параметрах URL-адреса подключения, чтобы исправить полученный URL-адрес. Не удалось найти то, что мне нужно изменить.
Я нашел код, в котором можно определить пароль и имя пользователя:
private Connection conn;
public MySQLConnection() throws SQLException {
System.out.println("At MySQLConnection()");
String driverName = "com.mysql.jdbc.Driver";
try {
Class.forName(driverName);
Properties props = new Properties();
props.setProperty("user","fred");
props.setProperty("password","secret");
props.setProperty("ssl","true");
String url = "jdbc:mysql://zivpc/workers?user=fredamp;password=secretamp;ssl=true";
Connection conn = DriverManager.getConnection(url);
this.conn = DriverManager.getConnection(url);
System.out.println("connected");
} catch (ClassNotFoundException e) {
System.out.println(e);
}
Попытка подключения приводит к следующему исключению: CommunicationsException: Communications link failure
.
Спасибо!
Комментарии:
1. Во-первых, JDBC не предназначен для использования с мобильными устройствами, где соединения могут прерываться в случайных точках, пожалуйста, пересмотрите то, что вы делаете. Помимо этого, ваш код предназначен для MySQL. MySQL не является SQL Server.
2. Задание, которое я получил, связано с подключением приложения Android к базе данных sql через sql server express. Есть ли правильный способ сделать это, например, с помощью чего-то другого, кроме jdbc?
3. Типичный способ связи с сервером из мобильного клиента — через веб-службу. Веб-служба взаимодействует с базой данных; приложение для Android или iOS взаимодействует с веб-службой.
Ответ №1:
Вам понадобится API (REST и т. Д.), работающий на веб-сервере, При этом этот веб-сервер имеет доступ к защищенному брандмауэром серверу базы данных. И аутентификация для вашего API, чтобы у вас не было случайных людей, выполняющих DDoS-атаку на вашу службу и базу данных.
Ваш сервер базы данных вообще не должен быть подключен к Интернету и не должен быть доступен напрямую с вашего клиента. Также не следует отправлять SQL-запросы непосредственно от клиента к серверу базы данных. Ваш API предоставляет набор функциональных возможностей и очень ограничен в отношении того, что клиент может запрашивать и получать.
Мобильное приложение -> интернет -> веб-сервер -> брандмауэр -> SQL Server
Подробности «как мне это реализовать» намного выходят за рамки Stack Overflow. В Интернете доступно множество руководств и пошаговых руководств. Выбирайте с умом.
Дополнительное примечание: вы говорите, что используете SQL Server 2008R2 Express Edition. Имейте в виду, что эта версия SQL Server будет обновлена менее чем через три месяца. Никто не должен был заниматься новой разработкой на нем в течение последних 5 лет. Будьте осторожны, принимая советы от тех, кто «руководил» вами при установке этой версии в 2019 году.
Комментарии:
1. Спасибо. Я хочу избежать траты времени и усилий, насколько это возможно, поэтому я хотел бы знать, полезно ли, по вашему мнению, руководство по следующей ссылке для добавления веб-службы в приложение adroid, которое будет использоваться для подключения sql server: youtube.com/watch?v=QTO5a1IeBl8