安卓程序与数据库的连接与打开mySQL 的远程连接

安卓程序与数据库的连接与打开mySQL 的远程连接

本文主要是分析安卓程序与数据库的连接代码的撰写,还有实现navcat打开mySQL 的远程连接

一、第一步:建立连接

下面是一个例子,用于与MYSQL 进行连接

private static Connection getConnection() {
        Connection conn = null;
        try {
            Class.forName("com.mysql.jdbc.Driver"); //加载驱动
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        try {
            //你的本机ip地址
            String ip = "192.168.31.212";
            conn = DriverManager.getConnection(
                    "jdbc:mysql://" + ip + ":3306/" + DB_NAME + "?serverTimezone=Asia/Shanghai&useSSL=false",
                    "root", "1234");
            Log.d(TAG, "数据库连接成功");

        } catch (SQLException ex) {
            Log.d(TAG, "数据库连接失败" + ex.toString());
            ex.printStackTrace();
        }
        return conn;
    }

这段代码主要用于建立与数据库的连接。下面是逐步解释其具体过程:

  1. 加载驱动程序:

    • Class.forName("com.mysql.jdbc.Driver") 用于加载 MySQL 驱动程序。这一步是必须的,它告诉 JVM 在运行时加载 MySQL 驱动程序类,以便建立数据库连接。
  2. 获取数据库连接:

    • 首先定义了一个 Connection 类型的变量 conn 用于存储数据库连接。
    • 然后使用 DriverManager.getConnection() 方法建立数据库连接。该方法接受三个参数:
      • 第一个参数是数据库连接的 URL,包括了数据库的地址、端口号、数据库名称以及一些连接参数。
      • 第二个参数是用户名。
      • 第三个参数是密码。
    • 在这里,数据库地址是本地IP地址(例如:“192.168.31.212”),端口号是 MySQL 默认的3306端口,数据库名称DB_NAME
    • URL 的格式为 "jdbc:mysql://ip:port/dbname?serverTimezone=Asia/Shanghai&useSSL=false",其中:
      • jdbc:mysql:// 指定了使用 MySQL 数据库。
      • ?serverTimezone=Asia/Shanghai 用于设置服务器时区,这里设置为上海时区。
      • &useSSL=false 表示不使用 SSL 连接,因为在开发阶段通常不需要。
    • 如果连接成功,将会输出"数据库连接成功"的日志信息。
    • 如果连接失败,则会输出"数据库连接失败"的日志信息,并打印异常信息。
    • 最后将连接对象 conn 返回。

连接建立后,可以通过这个连接执行 SQL 查询、插入、更新和删除等数据库操作。

下面是 getConnection() 方法的使用方法:

Connection conn = getConnection(); // 获取数据库连接

此处会根据数据库连接参数建立与数据库的连接。连接建立成功后,将可以执行其他数据库操作。

二、第二步 对数据库中的数据进行增删改查

2.1 查询数据库中的数据

下面是一个获取数据的例子:

 public static ArrayList<User> getAllUser() {
        ArrayList<User> userArrayList = new ArrayList<>();
        Connection conn = getConnection();
        try {
            String sql = "SELECT * FROM coll_data ";
            // 创建用来执行sql语句的对象
            Statement st = conn.createStatement();
            // 执行sql查询语句并获取查询信息
            ResultSet res = st.executeQuery(sql);
            if (res == null) {
                return null;
            } else {
                while (res.next()) {
                    User user = new User();
                    user.setId(res.getString("id"));
                    user.settemp(res.getString("temp"));
                    user.sethum(res.getString("hum") + "");
                    user.setAlcohol(res.getString("alcohol")+"");
                    user.setPeople(res.getString("peple")+"");
                    user.setSupersonic(res.getString("surpersomic")+"");
                    userArrayList.add(user);
                }
                //关闭连接
                conn.close();
                st.close();
                res.close();
                return userArrayList;
            }
        } catch (Exception e) {
            e.printStackTrace();
            Log.d(TAG, " 查询数据库数据操作异常......");
            return null;
        }
    }

getAllUser() 函数:

这个函数的作用是从名为 coll_data 的表中获取所有用户信息,并将其封装为 User 对象的列表返回。

  • 首先,通过 getConnection() 方法获取与数据库的连接。
  • 然后,构造 SQL 查询语句 "SELECT * FROM coll_data",用来从 coll_data 表中检索所有数据。
  • 接着,创建用来执行 SQL 语句的 Statement 对象 st
  • 通过 st.executeQuery(sql) 执行 SQL 查询,并将结果存储在 ResultSet 对象 res 中。
  • 然后,遍历结果集 res,逐行读取每个用户的信息,并使用 User 对象的相应方法设置用户的属性。
  • 最后,将设置好属性的 User 对象添加到 ArrayList 中,并返回该列表。
  • 在方法末尾关闭数据库连接、语句对象和结果集对象。

2.2 删除数据库中的数据

public static int delete(String id) throws SQLException {
        Connection conn = getConnection();
        try {
            Statement st = conn.createStatement();
            String sql = "delete from tb_user where id = '" + id + "'";
            //System.out.println(sql);
            int res = st.executeUpdate(sql);
            if (res == 0) {
                System.out.println("删除失败");
                return 0;
            } else {
                System.out.println("删除成功");
            }
            //关闭连接
            conn.close();
            st.close();
            return 1;
        }
        catch (Exception e) {
            e.printStackTrace();
            Log.d(TAG, " 数据操作异常");
            return 0;
        }
    }

delete() 函数:

这个函数的作用是根据传入的用户ID从名为 tb_user 的表中删除对应的用户信息。

  • 首先,通过 getConnection() 方法获取与数据库的连接。
  • 然后,构造 SQL 删除语句 "delete from tb_user where id = '" + id + "'",根据传入的ID删除对应的用户信息。
  • 接着,通过 st.executeUpdate(sql) 执行 SQL 删除语句,并获取受影响的行数。
  • 如果受影响的行数为0,则表示删除失败;否则,表示删除成功。
  • 在方法末尾关闭数据库连接和语句对象。

2.3 添加数据至数据库

 public static void add(String id,String upwd,String sexy,String isvalid,String uname,String arrivaldate,String birthday) throws SQLException {
        Connection conn = getConnection();
        try {
            Statement st = conn.createStatement();
            String sql = "insert into tb_user(id, uname,upwd,sexy,isvalid,arrivaldate,birthday) values("+"'"+id+"',"+"'"+ uname +"',"+"'"+upwd+"',"+"'"+sexy+"',"+"'"+isvalid+"',"+"'"+arrivaldate+"',"+"'"+birthday+"')";
            //System.out.println(sql);
            int res = st.executeUpdate(sql);
            if (res == 0) {
                System.out.println("增加失败");
                return ;
            } else {
                System.out.println("增加成功");
            }
            //关闭连接
            conn.close();
            st.close();
            return ;
        }
        catch (Exception e) {
            e.printStackTrace();
            Log.d(TAG, " 数据操作异常");
            return ;
        }
    }

add() 函数:
这个函数的作用是向名为 tb_user 的表中插入新的用户信息。

  • 首先,通过 getConnection() 方法获取与数据库的连接。
  • 然后,构造 SQL 插入语句,将传入的用户信息插入到 tb_user 表中。
  • 接着,通过 st.executeUpdate(sql) 执行 SQL 插入语句,并获取受影响的行数。
  • 如果受影响的行数为0,则表示插入失败;否则,表示插入成功。
  • 在方法末尾关闭数据库连接和语句对象。

2.4 修改数据库中的数据

 public static void update(String id,String upwd,String sexy,String isvalid) throws SQLException {
        Connection conn = getConnection();
        try {
            Statement st = conn.createStatement();
            String sql = "update tb_user set upwd="+"'"+upwd+"',"+"sexy="+"'"+sexy+"',"+"isvalid="+"'"+isvalid+"' where id="+"'"+id+"'";
            //System.out.println(sql);
            int res = st.executeUpdate(sql);
            if (res == 0) {
                System.out.println("修改失败");
                return ;
            } else {
                System.out.println("修改成功");
            }
            //关闭连接
            conn.close();
            st.close();
            return ;
        }
        catch (Exception e) {
            e.printStackTrace();
            Log.d(TAG, " 数据操作异常");
            return ;
        }
    }

update() 函数:
这个函数的作用是根据传入的用户ID更新名为 tb_user 的表中对应的用户信息。

  • 首先,通过 getConnection() 方法获取与数据库的连接。
  • 然后,构造 SQL 更新语句,根据传入的用户ID更新相应的用户信息。
  • 接着,通过 st.executeUpdate(sql) 执行 SQL 更新语句,并获取受影响的行数。
  • 如果受影响的行数为0,则表示更新失败;否则,表示更新成功。
  • 在方法末尾关闭数据库连接和语句对象。

这些函数都是对数据库进行增删改查操作的,通过连接到数据库,构造合适的 SQL 语句,然后执行这些 SQL 语句来实现相应的操作。

三、开启MySQL的远程连接

开启MySQL远程访问权限 允许远程连接

3.1 在navicat中直观的修改

1.打开你要使用的连接名
不一定是root,具体问题具体分析
2.找到一个mysql的数据库
3.在mysql数据库中有一个user的表
打开这个表
在这里插入图片描述
然后将第一个root用户的Host改为==%==,将host字段的值改为%就表示在任何客户端机器上能以root用户登录到mysql服务器,所以建议在开发时设为%
在这里插入图片描述

这样才打开了数据库的远程连接,安卓的程序才可以连接上数据库。

3.2 命令法

如果你没有将mysql可视化的软件,那么你可以通过终端进行命令修改相关权限

依次使用命令下面实现上面第一种方法时的改表:

use mysql;

update user set host = '%' where user = 'root';
  • 14
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

写的什么石山代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值