下面對android中出現的Network error IOException: failed to connect to /127.0.0.1 (port 1433): 做一下總結:
當用android程序調用本地的sqlserver的時候,當連接ip寫成127.0.0.1的時候,怎么都連不通,出現以下的錯誤信息:

感覺好像是代碼有問題或者是清單文件中某個權限忘加了,其實不是這樣的。原來模擬器默認把127.0.0.1和localhost當做本身了,在模擬器上可以用10.0.2.2代替127.0.0.1和localhost,另外如果是在局域網環境可以用 192.168.0.x或者192.168.1.x(根據具體配置)連接本機,這樣應該就不會報錯了。
package com.example.zhouy.mytest01; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; /** * Created by Administrator on 2017/12/14. */ public class DBUtil { private static Connection getSQLConnection(String ip,String user,String pwd,String db) { Connection con =null; try { Class.forName("net.sourceforge.jtds.jdbc.Driver"); con = DriverManager.getConnection("jdbc:jtds:sqlserver://"+ip+":1433/"+db+";charset=utf-8",user,pwd); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } return con; } public static String QuerySQL(){ String result=""; try { Connection conn = getSQLConnection("192.168.1.101","yonghuming","mima","SHUJUKU"); String sql = "select top 10 * from users"; Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery(sql); while(rs.next()) { String s1 = rs.getString("USRNAM"); String s2 = rs.getString("FULLNAME"); result += s1+" - " + s2 + "\n"; System.out.println(s1+" - "+s2); } rs.close(); stmt.close(); conn.close(); } catch (SQLException e) { e.printStackTrace(); result += "查詢數據異常!"+e.getMessage(); } return result; } public static void main(String[] args){ QuerySQL(); } }
