JTDS подключиться к удаленному серверу не удалось - PullRequest
0 голосов
/ 25 июня 2018

не знаю почему, приложение при подключении к SQL Server, который находится в той же сети, что и устройство, я могу подключиться к нему без проблем, но теперь мне нужно подключиться с устройства через Интернет к SQL Server не работает, не знаю почему. У меня есть кнопка для проверки соединения, и она будет вызывать метод, который содержит это, метод находится в фоновом режиме (AsyncTaskRunner)

try
{
    String host, port, dbname, user, password, instance;
    host = _editTextHost.getText().toString();
    port = _editTextPort.getText().toString();
    instance = _editTextInstance.getText().toString();
    dbname = _editTextDbName.getText().toString();
    user = _editTextUser.getText().toString();
    password = _editTextPass.getText().toString();
    String driver = "net.sourceforge.jtds.jdbc.Driver";
    String conString;
    if (TextUtils.isEmpty(port))
    {
        conString = "jdbc:jtds:sqlserver://" + host + ";databaseName=" + dbname + ";instance=" + instance;
    }
    else
    {
        conString = "jdbc:jtds:sqlserver://" + host + ":" + port + ";databaseName=" + dbname + ";instance=" + instance;
    }
    Connection con;
    Class.forName(driver);
    con = DriverManager.getConnection(conString, user, password);
    con.close();
    conSuccess = true;
}
catch (Exception e)
{
    e.printStackTrace();
    Log.e("SQLConfig", "Fail to connect");
    Log.e("SQLConfig", e.toString());
    Log.e("SQLConfig", e.getMessage());
}
return null;

Когда я пытаюсь подключиться к SQL Server в той же сети, работает без проблем, но когда я активирую 4g на устройстве, я всегда получаю ту же ошибку, что он не может найти экземпляр. Но если я подключаюсь к серверу через «SQL Server Management Studio», используя ту же информацию, я могу без проблем подключиться к серверу.

Я использую драйвер jtds, 1.3.1.

Что может делать это? Спасибо

P.S. Я все прочел кое-что о веб-сервисе, но сейчас хочу убрать эту опцию из картинки

Редактировать 1: Чтобы уточнить, я могу подключиться к серверу, используя учетные данные в версии Windows CE программы или SQL Server Management Studio. Когда я ставлю внешний IP-адрес и всю необходимую информацию, которую он подключает к серверу, он не подключается только на Android

1 Ответ

0 голосов
/ 25 июня 2018

Ну, немного изменив conString, я смог без проблем подключиться как из локальной сети, так и из Интернета.

if (TextUtils.isEmpty(port))
{
    conString = "jdbc:jtds:sqlserver://" + host + ";databaseName=" + dbname + ";instance=" + instance;
}
else
{
    conString = "jdbc:jtds:sqlserver://" + host + ":" + port + ";databaseName=" + dbname + ";instance=" + instance;
}

К

if (TextUtils.isEmpty(port))
{
    conString = "jdbc:jtds:sqlserver://" + host + "/" + instance + ";DatabaseName=" +dbname;
}
else
{
    conString = "jdbc:jtds:sqlserver://" + host + ":" + port + "/" + instance + ";DatabaseName=" + dbname;
}

Теперь работает без проблем, используя общедоступный хост или локальную сеть для доступа к БД.

...