踩了安卓诸多坑终于能使用Mysql数据库了

1. 日常吐槽

起初,以为安卓连接mysql数据库像普通java程序一样,没想到中间磕磕碰碰花了几个小时才成功。只能说我玩安卓的这段时间吃的坑比吃的饭还多。

首先说明,我对安卓开发也不是很了解,只是需要用才迫不得已地去用。因此,可能会有一些错误的观点。经过我的所见所闻,连接数据库有如下的坑:

①不能在主线程创建数据库连接对象(Connection);

②换句话说,安卓涉及到网络连接的似乎都不能在主线程中执行;

③要配置网络权限等

废话不多说,接下来就信息说一下我的做法:

引入mysql的驱动包就不多说了,应该都会。

①添加权限:

配置文件相关的到此结束。

② 代码配置:

在Activity的onCreate()方法添加如下代码:

StrictMode.ThreadPolicy policy=new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);

 添加原因我也不懂,这样做最终可行就对了。

③另开线程获取数据库连接:

我的具体想法就是:利用FutureTask类(因为可以等待结果的返回)的对象作为线程的执行任务。

具体代码如下:

private  FutureTask futureTask = new FutureTask(()->{
        try {
            Class.forName("com.mysql.jdbc.Driver");
            connection =  DriverManager.getConnection(FinalPro.DB_URL,FinalPro.DB_USER,FinalPro.DB_PASSWORD);
            System.out.println(connection + "-------");
        }catch (ClassNotFoundException  | SQLException e) {
            System.out.println("获取连接失败!!!" + Thread.currentThread() );
            e.printStackTrace();
        }
        return true;
    });

线程开始执行的代码如下:

@Override
    public Connection getConnection() {
         if (connection != null){
             return connection;
         }else{
             new Thread(futureTask).start();
             try {
                 futureTask.get();
                 return connection;
             } catch (ExecutionException e) {
                 e.printStackTrace();
             } catch (InterruptedException e) {
                 e.printStackTrace();
             }
         }
         return connection;
    }

总结:原生连接数据库的步骤虽然繁琐但是不是很难,因此我把没必要的代码省略了,但是应该没什么影响。最后,以上是我个人解决数据库连接问题的流程与做法。可能有不对或者误导的地方,在此请大家见谅!谢谢你们!!!

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值