JTDS подключиться к удаленному серверу не удалось
Не знаю почему, приложение при подключении к 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.
Что может делать это? Спасибо
PS Я все прочел кое-что о веб-сервисе, но сейчас хочу убрать эту опцию из картинки
Изменить 1: Чтобы уточнить, я могу подключиться к серверу, используя учетные данные в версии Windows CE программы или SQL Server Management Studio. Когда я ставлю внешний IP-адрес и всю необходимую информацию, которую он подключает к серверу, он не подключается только на Android
1 ответ
Ну, немного изменив 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;
}
Теперь работает без проблем, используя общедоступный хост или локальную сеть для доступа к БД.