2

此代码在纯 Java 应用程序中运行良好:

    Connection conn = null;
    Statement inst;

    try {

        Class.forName ("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance ();

        conn = DriverManager.getConnection("jdbc:sqlserver://192.168.1.100\\MSSQLSERVER:1433;DatabaseName=Prueba", "sa", "sa1234");
        inst = conn.createStatement();

        inst.executeUpdate("INSERT INTO TIENDAS(NOMBRE) VALUES ('ZZZZZZZ') ");

    } catch (Exception e) {
        e.printStackTrace();
    }
}

但在 Android 项目中,我收到错误'Socket closed'

我正在使用 Eclipse Helios。

有人可以帮助我吗?

4

2 回答 2

5

Android 不是 Java 的完整实现,因此该驱动程序(如果它是类型 4 驱动程序)可能正在使用 Java 中尚未移植到 Android 的某些功能。这首先是在不知道它是否真的会在 Android 上运行的情况下在 Android 中使用代码的问题。

现在更普遍地关心你在做什么。除非您正在为 android 开发 SQL 浏览器,否则我会非常关心您在做什么。为了让您的 Android 客户端看到数据库意味着它必须通过互联网公开。这是一个非常糟糕的主意。将您的数据库暴露给世界其他地方意味着他们不必使用您的应用程序来连接它。我可以启动任何旧的 SQL 浏览器并开始猜测密码、四处破解、尝试默认帐户。因此,如果您还没有锁定您的数据库,那么问题不是是否有人会破解它,而是何时。

如果不通过 Tomcat、Jetty 等 APP 服务器,您不应该直接从 Android 访问可远程访问的数据库。经验法则:如果您发现自己在防火墙上向所有人开放数据库端口以使您的解决方案正常工作. 你肯定做错了。

于 2012-04-25T14:14:20.560 回答
0

您是否拥有 Android 清单中定义的互联网权限?

于 2012-04-25T14:13:22.973 回答