Android 使用Microsoft Azure和JTDS的EHOSTUNREACH(无主机路由)

Android 使用Microsoft Azure和JTDS的EHOSTUNREACH(无主机路由),android,android-studio,networking,jdbc,azure-sql-database,Android,Android Studio,Networking,Jdbc,Azure Sql Database,我正在开发一个与azure数据库关联的android应用程序 但是,当我在我的家庭网络上测试应用程序时,应用程序运行时没有任何错误 当我外出或连接到另一个wifi网络时 发生此错误 W/System.err: java.sql.SQLException: Network error IOException: failed to connect to devserverall.database.windows.net/xx.xxx.xxx.xx (port 1433) from /yyy.yyy.

我正在开发一个与azure数据库关联的android应用程序 但是,当我在我的家庭网络上测试应用程序时,应用程序运行时没有任何错误 当我外出或连接到另一个wifi网络时 发生此错误

W/System.err: java.sql.SQLException: Network error IOException: failed to connect to devserverall.database.windows.net/xx.xxx.xxx.xx (port 1433) from /yyy.yyy.y.yyy (port 48262) after 30000ms: isConnected failed: EHOSTUNREACH (No route to host)
        at net.sourceforge.jtds.jdbc.JtdsConnection.<init>(JtdsConnection.java:436)
W/System.err:     at net.sourceforge.jtds.jdbc.Driver.connect(Driver.java:184)
        at java.sql.DriverManager.getConnection(DriverManager.java:580)
        at java.sql.DriverManager.getConnection(DriverManager.java:236)
        at com.example.helpy.BackgroundTask2.connection(BackgroundTask2.java:32)
        at com.example.helpy.BackgroundTask2.executelist(BackgroundTask2.java:47)
        at com.example.helpy.BackgroundTask2.doInBackground(BackgroundTask2.java:113)
        at com.example.helpy.BackgroundTask2.doInBackground(BackgroundTask2.java:16)
        at android.os.AsyncTask$3.call(AsyncTask.java:378)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:289)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
        at java.lang.Thread.run(Thread.java:919)

可能是网络连接问题,您可以验证:

  • 该应用程序已成功从wifi网络连接到Internet。确保WiFi或手机已打开并可运行
  • 应用程序传出公共IP地址已从wifi网络更改,您可以将新客户端IP添加到Azure SQL server防火墙,请参阅
  • 端口1433在您的wifi网络中被阻止
有关更多详细信息,请参阅

jdbc:jtds:sqlserver://devserverall.database.windows.net:1433;DatabaseName=xxx;user=xxxx@devserverall;password=xxxxx;encrypt=true;trustServerCertificate=false;hostNameInCertificate=*.database.windows.net;loginTimeout=30;