Ошибки при подключении сервера MSSQL к приложению Android

#java #android #sql-server #jdbc #sql-server-2019

#java #Android #sql-сервер #jdbc #sql-сервер-2019

Вопрос:

Я пытаюсь подключить свое приложение Android к серверу MSSQL, который установлен на моем ПК. Ранее мне удавалось их подключить, но по какой-то причине теперь я получаю сетевую ошибку. Я знаю, что прямое соединение не должно быть установлено, и следует использовать веб-сервис, но мне необходимо установить соединение JDBC с базой данных.

Ошибка, которую я получаю, это:

Сетевая ошибка IOException: не удалось подключиться к / 192.168.0.101 (порт 1433) из / 192.168.0.100 (порт 37632)

Я настроил свой сервер MSSQL на прослушивание порта 1433.

Это класс подключения.

 package com.example.resourceapplication.LogIn;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import android.annotation.SuppressLint;
import android.os.StrictMode;
import android.util.Log;

public class ConnectionClass {
    static String ip = "192.168.0.101";
    static String classs = "net.sourceforge.jtds.jdbc.Driver";
    static String db = "EKANBAN";
    static String username = "root";
    static String password = "root";

    public static Connection CONN(){
        StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder()
                .permitAll().build();
        StrictMode.setThreadPolicy(policy);
        Connection conn = null;
        String ConnURL = null;
        try {
            Class.forName("net.sourceforge.jtds.jdbc.Driver");
            ConnURL = "jdbc:jtds:sqlserver://"   ip   ";"
                      "databaseName="   db   ";user="   username   ";password="
                      password   ";";
            DriverManager.setLoginTimeout(2);
            conn = DriverManager.getConnection(ConnURL);
            Log.d("Hello","It Worked");

        } catch (SQLException se) {
            Log.e("ERRO", se.getMessage());
            return null;
        } catch (ClassNotFoundException e) {
            Log.e("ERRO", e.getMessage());
            return null;
        } catch (Exception e) {
            Log.e("ERRO", e.getMessage());
            return null;
        }
        return conn;
    }
}
 

Этот класс работал у меня раньше, но по какой-то причине сейчас не работает. Любая помощь будет оценена.

Комментарии:

1. Как вы тестируете? Эмулятор (на том же или другом компьютере с сервера MSSQL) или устройство (марка / модель / версия ОС) в той же сети? Проверяли ли вы с другого компьютера, доступен ли сервер MSSQL?

2. Проверьте настройки брандмауэра Windows, чтобы узнать, разрешены ли входящие подключения к tcp / 1433 из вашей локальной подсети, поскольку эмулятор Android работает на другом IP-адресе (192.168.0.100), чем ваш компьютер (169.168.0.101).

3. Вы не должны использовать драйверы JDBC на Android, вместо этого вы должны создать службу REST, которая является посредником между вашим приложением Android и базой данных.