踩了安卓诸多坑终于能使用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;}
总结:原生连接数据库的步骤虽然繁琐但是不是很难,因此我把没必要的代码省略了,但是应该没什么影响。最后,以上是我个人解决数据库连接问题的流程与做法。可能有不对或者误导的地方,在此请大家见谅!谢谢你们!!!
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
