首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >minSdkVersion大于9时,安卓通信链路故障

minSdkVersion大于9时,安卓通信链路故障
EN

Stack Overflow用户
提问于 2013-10-15 06:15:35
回答 2查看 2.5K关注 0票数 0

使用mysql-connector-java.5.1.26-bin.jar将我的android应用程序连接到远程mysql主机。问题是,任何高于minSdkVersion 9的代码都会导致“通信链路故障”。如果我将其设置为9,它可以正常连接并获取数据库信息。这是我的连接代码:

代码语言:javascript
运行
复制
try {
        Class.forName("com.mysql.jdbc.Driver");
        Connection con = DriverManager.getConnection(url, user, pass);

        Statement st = con.createStatement();
        ResultSet rs = st.executeQuery("select * from users");
        ResultSetMetaData rsmd = rs.getMetaData();
        while(rs.next()) {              
           ....
        }
    }
    catch(Exception e) {
        e.printStackTrace();
    }

你知道为什么会发生这样的事情吗?

EN

回答 2

Stack Overflow用户

发布于 2013-10-16 06:42:33

原来问题是我试图在主活动中进行网络连接。对于那些可能有相同问题的人,可以考虑使用asynctask来完成连接。

http://developer.android.com/reference/android/os/AsyncTask.html

票数 0
EN

Stack Overflow用户

发布于 2015-03-03 09:33:47

下面是我的开发环境:

Eclipse OS: Ubuntu14.04

  • IDE:
  • 露娜
  • DB: MySQL5.1.73

首先,我将下面的代码放在OnCreate方法中:

代码语言:javascript
运行
复制
Class.forName("com.mysql.jdbc.Driver").newInstance();       
Connection conn = DriverManager.getConnection(url, username,
                        password);
Statement stmt = conn.createStatement();            
String sql = "select distinct Action from attributes";
ResultSet rs = stmt.executeQuery(sql);

连接代码正常,但会出现以下情况:

通信链路failure.The成功发送到服务器的最后一个数据包是0毫秒前。驱动程序尚未收到来自服务器的任何数据包。

所以它一定是在其他地方出错了。在尝试了各种方法后,用android AsyncTask解决了这个问题。只需将与操作mysql相关的代码放在扩展AsyncTask的类中即可。下面是我的代码:

代码语言:javascript
运行
复制
private class Connect extends AsyncTask<String, Void, Void> {

        @Override
        protected Void doInBackground(String... urls) {
            try {
                Class.forName("com.mysql.jdbc.Driver").newInstance();
                Connection conn = DriverManager.getConnection(url, username,
                        password);
                Statement stmt = conn.createStatement();
                String sql = "select distinct Action from attributes";
                ResultSet rs = stmt.executeQuery(sql);

                List<String> actions = new ArrayList<String>();
                while (rs.next()) {
                    actions.add(rs.getString("Action"));
                }
            } catch (Exception e) {
                Log.d("MySQLConnection", e.getMessage());
            }
            return null;
        }

    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19370172

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档