JTDS连接到远程服务器失败

时间:2018-06-25 11:34:28

标签: android sql jtds

不知道为什么,该应用程序在连接到与该设备位于同一网络上的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。我所有人都读过一些有关Web服务的内容,但现在我想从图片中删除此选项

编辑1:为了明确起见,我可以使用程序的Windows CE版本或SQL Server Management Studio上的凭据连接到服务器。当我将外部IP和所有必需的信息都连接到服务器时,它就不能仅在Android上连接

1 个答案:

答案 0 :(得分:0)

通过稍微更改conString,我可以连接到本地网络或Internet,而不会出现任何问题。

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;
}

现在可以使用公共主机或本地网络访问数据库,而不会出现任何问题。