Android访问MySQL的一些问题

Android通过druid连接池访问MySQL

一.我所遇到的问题

在这里插入图片描述

他说无妨访问到ObjectFactory,找不到javax.naming.sql.ObjectFactory的类文件,我就奇了怪了,我用的jdk1.8怎么可能没有javax包,我一查果然有。

在这里插入图片描述

这个问题困扰了我很久,因为学过MySQL的都知道,用原生的jdbc和用数据连接池是两个概念,用原生的jdbc你不仅浪费资源,而且要不停的向操作系统申请资源,不停的用完资源之后释放资源。这个是一个耗时操作,那么响应时间慢,用户体验就肯定不好,所以我就是想用数据连接池druid,还有JdbcTemplate来简化我的代码



二.解决问题

那么我首先他说无法访问javax.naming.sql.ObjectFactory这个东西,我把Jdk提供的类库全部当作第三方库给他导入进去,结果就真的报错报别的了,接下来我只能叙述,因为我就想着解决问题,我觉得这点是真的坑,可能就是AS中jdk部分有删减,所以就无法访问ObjectFactory,所以我把jdk中的导入试试,结果真的好了,这个真的是太坑了

接下来还有些小问题
就是你Android中访问数据库一定要放在线程中,因为访问数据库是一个耗时操作嘛,那还是放在线程中会比较好,如果你不用线程,那么可能会报错
具体可参考:Android和线程和MySQL
https://blog.csdn.net/baisedeqingting/article/details/78625078#commentsedit

还有就是访问MySQL数据库是需要网络的,你需要添加权限
在这里插入图片描述

具体可查:https://blog.csdn.net/itluochen/article/details/52181560?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522158928001419725211905089%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=158928001419725211905089&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~baidu_landing_v2~default-2-52181560.nonecase&utm_term=Android%E8%BF%9E%E6%8E%A5MySQL

还有就是你实体类最好变量还是用基本类型的包装类来定义,因为他传进来的是对象,是引用类型。

还有就是你需要把配置给改了
pro.setProperty(“url”,“jdbc:mysql://192.168.0.104:3306/bigwork_android?autoReconnect=true&failOverReadOnly=false”);
autoReconnect=true&failOverReadOnly=false
这里是采用doGet方法通过url加参数和参数的属性

在这里插入图片描述

如果你不加可能包的就是报Communications link failure 连接错误了这个连接错误了
具体可参考:https://blog.csdn.net/qq_27471405/article/details/80921846
https://www.cnblogs.com/jianzhixuan/p/6923216.html

还有一个问题是你得让你电脑上得服务器MySQL服务允许远程访问
也就是两条命令就行了
首先打开你的MySQL Command Line Client
然后输入GRANT ALL PRIVILEGES ON . TO ‘root’@’%’ IDENTIFIED BY ‘root’ WITH GRANT OPTION;
FLUSH PRIVILEGES;
这两条指令就可以了

在这里插入图片描述

不过我的电脑没有遇到过这个问题



三.代码和运行结果

接下来我放一下我做的这个教务管理系统的基础代码

定义一个实体类Student用来接收List集合中的对象

package com.example.bigwork.Activities.JavaBean;

public class Student {
   
    private Integer id;
    private String name;
    private Integer username;
    private String password;

    public Student() {
   
    }

    public Student(Integer id, String name, Integer username, String password) {
   
        this.id = id;
        this.name = name;
        this.username = username;
        this.password = password;
    }

    @Override
    public String toString() {
   
        return "Student{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", username=" + username +
                ", password='" + password + '\'' +
                '}';
    }

    public Integer 
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
Android 应用程序可以通过网络访问 MySQL 数据库,获取数据列表的步骤如下: 1. 在 MySQL 数据库中创建一个 PHP 脚本,该脚本可以查询数据并将结果以 JSON 格式返回。 ```php <?php // 连接数据库 $con = mysqli_connect("localhost", "username", "password", "database"); // 检查连接是否成功 if (mysqli_connect_errno()) { echo "连接 MySQL 数据库失败: " . mysqli_connect_error(); } // 查询数据 $result = mysqli_query($con, "SELECT * FROM my_table"); // 将结果转换为 JSON 格式 $rows = array(); while ($r = mysqli_fetch_assoc($result)) { $rows[] = $r; } print json_encode($rows); // 关闭连接 mysqli_close($con); ?> ``` 2. 在 Android 应用程序中使用 HttpURLConnection 或者 Volley 等网络库访问该 PHP 脚本,并获取返回的 JSON 数据。 ```java // 使用 HttpURLConnection 访问 PHP 脚本 URL url = new URL("http://example.com/your_php_script.php"); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("GET"); conn.connect(); // 获取返回的 JSON 数据 InputStream inputStream = conn.getInputStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream)); StringBuffer buffer = new StringBuffer(); String line = ""; while ((line = reader.readLine()) != null) { buffer.append(line); } // 解析 JSON 数据 JSONArray jsonArray = new JSONArray(buffer.toString()); for (int i = 0; i < jsonArray.length(); i++) { JSONObject jsonObject = jsonArray.getJSONObject(i); String field1 = jsonObject.getString("field1"); String field2 = jsonObject.getString("field2"); // ... } ``` 以上就是 Android 访问 MySQL 数据库并返回数据列表的基本步骤。需要注意的是,应该在子线程中执行网络请求,不要在主线程中进行,以免阻塞主线程。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值