我正在尝试连接到当前托管在我本地计算机上的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)
答案 0 :(得分:1)
我可以看到两个可能的问题解决方案:
通过设置以下内容检查您的SQL Server数据库是否可以在线模式访问:
ALTER DATABASE database-name SET ONLINE
答案 1 :(得分:0)
您只需关闭WINDOWS防火墙即可解决您的问题。防火墙将阻止您的真实设备与本地MS SQL服务器建立连接。 这样做对我来说很好。
但是,由于关闭防火墙不是一个好主意,请配置Windows防火墙以访问数据库引擎,单击此链接并按照步骤进行操作。