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 ドライバーである場合、Android に移植されていない Java の機能を使用している可能性があります。これは、コードが実際に Android で実行されるかどうかを知らずに Android でコードを使用することに関する何よりも重要な懸念事項です。

今、あなたがしていることについてのより一般的な関心事。Android 用の SQL ブラウザーを開発している場合を除き、私はあなたが何をしているのか非常に心配しています。Android クライアントが DB を参照できるようにするには、DB をインターネット経由で公開する必要があります。それは非常に悪い考えです。DB を世界中に公開するということは、DB に接続するためにアプリを使用する必要がないことを意味します。古い SQL ブラウザーを起動して、パスワードを推測したり、ハッキングしたり、デフォルトのアカウントを試したりすることができます。したがって、DB をロックダウンしていない場合、問題は誰かがハッキングするかどうかではなく、いつハッキングするかです。

Tomcat、Jetty などの APP サーバーを経由せずに、Android からリモートでアクセス可能な DB に直接アクセスするべきではありません。 . あなたは間違いなく間違っています。

于 2012-04-25T14:14:20.560 に答える
0

Android マニフェストで定義されたインターネット アクセス許可を持っていますか?

于 2012-04-25T14:13:22.973 に答える