2

我正在使用 android 4.1.1、IDE= eclipse 和 SQL Server 2008。

Device= Note 2

android:minSdkVersion="10"

当我在 UI 线程上运行代码片段时,它给了我错误“无法从 SQL Server 获取信息:”,但如果我在后台线程或 AsyncTask 线程中运行代码,它就可以工作。对于理解这两个过程的任何帮助将不胜感激?

注意:“当我将 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 回答