与本地SQL Server数据库的连接在模拟器上有效,但在实际设备上失败

问题描述 投票:0回答:2

我正在尝试连接到本地计算机上当前托管的SQL Server数据库。我正在使用以下代码进行连接:

public class DBConnect {

    private static volatile DBConnect INSTANCE = null;
    String URL = "";
    Connection conn = null;
    Statement statement = null;
    ResultSet resultSet = null;

    private DBConnect() {

    }

    public static DBConnect getInstance() {
        if (INSTANCE == null) {
            synchronized (DBConnect.class) {
                INSTANCE = new DBConnect();
            }
        }
        return INSTANCE;
    }

    public void setConnection(String DBName, String UserName, String Password) {
        try {
            Class.forName("net.sourceforge.jtds.jdbc.Driver").newInstance();
            URL = "jdbc:jtds:sqlserver://192.168.0.81:1433;instanceName=SQLEXPRESS;DatabaseName=" + DBName + ";integratedSecurity=true;user=" + UserName + ";password=" + Password;
            conn = DriverManager.getConnection(URL);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

这在我的Genymotion模拟器上有效,因为我还执行了选择并看到了显示的结果。

我正在使用JTDS驱动程序执行此操作

但是,当我尝试使用位于同一Wi-Fi网络上的真实设备却无法正常工作时,出现连接错误。

任何想法我为什么要得到这个?

这是我的错误日志:

java.sql.SQLException: Network error IOException: failed to connect to /192.168.0.81 (port 1433) after 90000ms
07-18 08:29:09.465  27413-27514/ordermanager.sentosa.ro.ordermanager W/System.err﹕ at net.sourceforge.jtds.jdbc.ConnectionJDBC2.<init>(ConnectionJDBC2.java:410)
07-18 08:29:09.466  27413-27514/ordermanager.sentosa.ro.ordermanager W/System.err﹕ at net.sourceforge.jtds.jdbc.Driver.connect(Driver.java:187)
07-18 08:29:09.466  27413-27514/ordermanager.sentosa.ro.ordermanager W/System.err﹕ at java.sql.DriverManager.getConnection(DriverManager.java:175)
07-18 08:29:09.467  27413-27514/ordermanager.sentosa.ro.ordermanager W/System.err﹕ at java.sql.DriverManager.getConnection(DriverManager.java:140)
07-18 08:29:09.467  27413-27514/ordermanager.sentosa.ro.ordermanager W/System.err﹕ at ordermanager.sentosa.ro.ordermanager.utils.DBConnect.setConnection(DBConnect.java:39)
android sql sql-server database-connection
2个回答
1
投票

我可以看到的两种可能的解决方案:

  1. 您使用的Genymotion模拟器可能正在其他网络上工作
  2. 通过设置此选项,是否可以在线模式访问SQL Server数据库:

    ALTER DATABASE database-name SET ONLINE


0
投票

您只需关闭WINDOWS防火墙即可解决您的问题。防火墙将阻止您的真实设备与本地MS SQL服务器建立连接。这样做对我来说很好。不要忘记让防火墙恢复工作。

© www.soinside.com 2019 - 2024. All rights reserved.