不知道为什么,应用程序连接到与设备位于同一网络上的SQL Server时,我可以毫无问题地连接到它,但现在我需要通过Internet从设备连接到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.我都读过一些关于WebService的文章,但是我想暂时删除这个选项
编辑1:为了澄清,我可以使用程序的WindowsCE版本或SQL Server Management Studio上的凭据连接到服务器。当我把外部IP和所有需要的信息都连接到服务器上时,它并不仅仅连接到Android上