踩了安卓诸多坑终于能使用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;});

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

@Overridepublic 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;}

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


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部