自学内容网 自学内容网

安卓程序与数据库的连接与打开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';

原文地址:https://blog.csdn.net/qq_63831368/article/details/139021543

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!