shkxwnjxhjsj 2017-08-22 07:29 采纳率: 44.4%
浏览 1492
已采纳

android直接连接mysql时,从返回的resultset取数据时出错

各位大佬,我最近在做一个Android功能,遇到了一个麻烦.

我自己写了一个DBconnection类,让别的程序来调用此类以实现从远程服务器查询数据的功能,DBconnection这个类我已经在eclipse中成功的取出数据了,而且在Androidstudio中确定已经将mysql的驱动加入library了,数库库操作也是在子线程中进行的,然而按钮一点击这个app就闪退掉了,求大佬们帮忙看一下

以下是按钮点击查询

btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                new Thread(new Runnable() {

                    @Override

                    public void run() {
                        try {
                            String sql = "select*from ****";
                            DBconnection con = new DBconnection();
                            ResultSet rs=null;
                            String str="";
                            rs=con.doQuery(sql,"dbname");
                            while(rs.next()){
                                str+= rs.getString(1);
                            }
                            Toast.makeText(Login.this,str,Toast.LENGTH_LONG).show();//我的控制台不知道为什么用不了,所以只能用toast看了
                            con.close();
                        }catch(SQLException e){}

                    }
                }).start();

            }
        });

            }
        });

以下是我自己写的DBconnection类,这个类在eclipse中已经能成功的取数据了

 public class DBconnection {
    Connection conn=null;
    Statement pre=null;
    ResultSet rs=null;

    public Connection getConn(String dbname){
        try{
            Class.forName("com.mysql.jdbc.Driver");
        }catch(ClassNotFoundException e){}

        try {
            //----------------------------------get connection-------
            String uri = "jdbc:mysql://***.**.***.**:3306/" + dbname + "";
            String user = "*****";
            String pwd = "*******";
            conn = DriverManager.getConnection(uri, user, pwd);//get connection
        }catch(SQLException e1){}
        return conn;
    }

    public ResultSet doQuery(String sql,String dbname){
        try {
            pre=this.getConn(dbname).prepareStatement(sql);
            rs=pre.executeQuery(sql);
        } catch (SQLException e) {}
        return rs;
    }



    public void close(){
        try {
            if(rs!=null){
                rs.close();
                rs=null;
            }
            if(pre!=null){
                pre.close();
                pre=null;
            }
            if(conn!=null){
                conn.close();
                conn=null;
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}
  • 写回答

7条回答

  • Newbieforme 2017-08-22 07:42
    关注

    我好像知道了,线程里不可以操作界面,比如那个吐司 toast

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(6条)

报告相同问题?

悬赏问题

  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 LiBeAs的带隙等于0.997eV,计算阴离子的N和P
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 来真人,不要ai!matlab有关常微分方程的问题求解决,
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算