Как улучшить SQL-соединение

Привет всем, я работаю над приложением, которое отправляет данные из приложения для Android на сервер MS-SQL и программное обеспечение для основных окон на C #, которое получает данные с сервера MS-SQl. Проблема в том, что программам требуется слишком много времени для создания соединения, особенно в приложении для Android, которое иногда приводит к сбою приложения. Кстати скорость интернета в нашей стране несколько раз идет неделю. Я искал решение, но не нашел в Интернете, и я не могу понять, как его решить. И я вижу Viber, Watsapp, Massenger ... и т. д. он отправляет данные мгновенно или синхронно, даже если скорость интернета неделя. Так что я могу получить некоторую помощь и предложение. И есть вспомогательный метод подключения:


общедоступные соединения () {

    IP="www.examlple.net";
    DB="DB_test";
    DBUserName="admin";
    DBPassword="*****";    
    StrictMode.ThreadPolicy policy= new StrictMode.ThreadPolicy.Builder().permitAll().build();
    StrictMode.setThreadPolicy(policy);
    Connection connection=null;
    String connectionURL=null;
    try {
        Class.forName("net.sourceforge.jtds.jdbc.Driver").newInstance();
        connectionURL ="jdbc:jtds:sqlserver://"+IP+";DatabaseName="+DB+";integratedSecurity=true;user="+DBUserName+";password="+DBPassword;

        connection = DriverManager.getConnection(connectionURL);

    } catch (SQLException | ClassNotFoundException e) {
        e.printStackTrace();
    } catch (IllegalAccessException e) {
        e.printStackTrace();
    } catch (InstantiationException e) {
        e.printStackTrace();
    }
    return connection;
}

person Omar    schedule 06.07.2020    source источник
comment
Если у вас низкая скорость соединения, вы ничего не можете сделать. Но вы можете реализовать процесс повторной попытки medium.com/@pramodsachintha/< /а>   -  person pix    schedule 06.07.2020
comment
@pix Хорошо, я согласен с вами, но даже при хорошем интернете для установления соединения требуется время›   -  person Omar    schedule 06.07.2020
comment
Используйте пул соединений. А еще лучше не выполнять SQL с мобильного устройства через Интернет, а заставить мобильное устройство обмениваться данными с веб-службой, которая, в свою очередь, выполняет операторы SQL. Это то, что делают все те приложения, которые вы упомянули.   -  person Andreas    schedule 06.07.2020
comment
@Andreas прав, вы должны / должны использовать выделенный веб-сервис.   -  person pix    schedule 06.07.2020
comment
Протокол связи, используемый для взаимодействия с базами данных, обычно не предназначен для использования в сетях с высокой задержкой. Это делает использование базы данных напрямую проблематичным: медленным и, возможно, небезопасным. Это одна из причин, по которой люди почти всегда создают API*: веб-сервис, работающий с базой данных.   -  person Joni    schedule 06.07.2020
comment
Как я понял из ваших комментариев, я использую веб-API вместо прямого SQL-запроса. Большое спасибо, ребята.   -  person Omar    schedule 06.07.2020


Ответы (1)


Для полноты картины с помощью JTDS вы можете установить как loginTimeout, так и socketTimeout в строке подключения. Обратитесь к примечаниям к этим здесь.

Но, как говорили другие, вы должны пройти через какой-то веб-API. Вы действительно хотите, чтобы ваш SQL-сервер был доступен в Интернете?

Кроме того, я только что заметил, что вы указали integrated security=true, а также указали имя пользователя и пароль. Вы не можете этого сделать. Один для проверки подлинности Windows (встроенная безопасность), а другой — для проверки подлинности SQL (пользователь и пароль). Вам придется использовать имя пользователя и пароль. Но не надо. Не делай этого. пройти через веб-API.

person allmhuran    schedule 06.07.2020
comment
Спасибо, как вы и другие говорите, что я мог бы использовать веб-сервис вместо прямого соединения SQL. - person Omar; 06.07.2020