Android 使用Microsoft Azure和JTDS的EHOSTUNREACH(无主机路由)
我正在开发一个与azure数据库关联的android应用程序 但是,当我在我的家庭网络上测试应用程序时,应用程序运行时没有任何错误 当我外出或连接到另一个wifi网络时 发生此错误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.
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;