2

私はandroid4.1.1、IDE = eclipse、およびSQLServer2008を使用しています。

Device= Note 2

android:minSdkVersion="10"

UIスレッドでコードスニペットを実行すると、「SQL Serverから情報を取得できません:」というエラーが表示されますが、バックグラウンドスレッドまたはAsyncTaskスレッドでコードを実行すると機能します。2つのプロセスを理解する上で何か助けていただければ幸いです。

注:「この問題は、minSDKVersionを8から10にアップグレードしたときに発生しました。」

public Boolean open() {
    Boolean res = false;
    try {
        String s = "jdbc:jtds:sqlserver://" + "xx.xxx.x.xx" + "/" + "FOO" + ";instance=SQLEXPRESS";
        Class.forName("net.sourceforge.jtds.jdbc.Driver");
        con = DriverManager.getConnection(s, "UserFoo", "1234");
        res = true;
    } catch (SQLException sx) {
        Log.e(TAG, "DB:Open - " + sx.toString());
    } catch (ClassNotFoundException e) {
        Log.e(TAG, "DB:Open - " + e.toString());
    }

    return res;

}
4

1 に答える 1

1

Android 3.0以降、メイン(UI)スレッドでネットワークにアクセスしようとすると次のようになります。

NetworkOnMainThreadException

コールスタックのどこか上位にあるため、表示されなかったと思います。

catch (Exception)

これは次のことにつながります:

"Unable to get information from SQL Server:"

すでに発見したように、別のスレッドが解決策です。

于 2012-11-15T17:06:09.353 に答える