Android的Java的ODBC连接(Android Java ODBC Connection)

2019-10-17 08:18发布

我在这里有关于Android ...我试图连接到我的MySQL数据库与代码另一个问题:

  public void testDB() {
    TextView tv = (TextView)this.findViewById(R.id.textView1);
    try {
        Class.forName("com.mysql.jdbc.Driver");
        Connection con = DriverManager.getConnection(url, user, pass);
        /* System.out.println("Database connection success"); */

        String result = "Database connection success\n";
        Statement st = con.createStatement();
        ResultSet rs = st.executeQuery("select * from users");
        ResultSetMetaData rsmd = rs.getMetaData();

        while(rs.next()) {
            result += rsmd.getColumnName(1) + ": " + rs.getInt(1) + "\n";
            result += rsmd.getColumnName(2) + ": " + rs.getString(2) + "\n";
            result += rsmd.getColumnName(3) + ": " + rs.getString(3) + "\n";
        }
        tv.setText(result);
    }
    catch(Exception e) {
        e.printStackTrace();
        tv.setText(e.toString());
    }   

}

在AVD我得到这个错误:

10-23 16:49:08.103: W/System.err(12939): java.sql.SQLException: Unable to connect to any hosts due to exception: android.os.NetworkOnMainThreadException

我觉得有什么不对劲的库,是真的吗? 但我tryied这对bluestack模拟器,与Android姜饼我想和连接工作好...是否有人知道我该怎么办?

Answer 1:

你得到一个NetworkOnMainThreadException 。 随着蜂窝和转发,你不能做你的主线程,这就意味着你需要关闭移动你的代码放到一个单独的线程任何网络任务。 我建议一个的AsyncTask 。



Answer 2:

该例外是非常丰富的:你在这是不允许的主线程做网络操作。 这篇文章是指导后台操作。



Answer 3:

这是因为你正在做在主线程网络操作,可以考虑使用AsyncTask网络操作。

实例AsyncTask实现: http://androidresearch.wordpress.com/2012/03/17/understanding-asynctask-once-and-forever/

不要在你的网络操作doInBackground



Answer 4:

 java.sql.SQLException: Unable to connect to any hosts due to exception: android.os.NetworkOnMainThreadException

所有的网络电话应该是在单独的线程,而不是在主线程。 您需要使用AsynchTask进行网络通话。

下面是Android的教程如何编写asynchtask用于这一目的。



文章来源: Android Java ODBC Connection