Android Studio实现Mysql(5.7)数据库增删改查(上)——用户登录功能实现

这篇具有很好参考价值的文章主要介绍了Android Studio实现Mysql(5.7)数据库增删改查(上)——用户登录功能实现。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言:如果android studio安装和第一次跑helloworld有什么问题可以参考:(34条消息) Android Studio踩的那些坑(gradle build、unable to find tasks to···等等)_TidesWise的博客-CSDN博客

目录

准备工作

查询学生数目demo: 

增删改查完整案例


准备工作

1、在Android Studio中新建项目My Application;

2、在AndroidManifest.xml文件中加入以下两句代码,授予网络权限:

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

3、win+R输入cmd输入命令ipconfig,查看本机IPV4地址,记住它;注意IPV4地址可能会有变化!

4、打开数据库管理工具,这里以Navicat为例,连接本机localhost mysql数据库,查看相应用户:

Android Studio实现Mysql(5.7)数据库增删改查(上)——用户登录功能实现

5、新建用户tides,主机输入%:

Android Studio实现Mysql(5.7)数据库增删改查(上)——用户登录功能实现  

6、在开始找到并打开Mysql 5.7 Command Line:

Android Studio实现Mysql(5.7)数据库增删改查(上)——用户登录功能实现

输入密码为mysql的密码,输入以下命令,结果显示Query OK, 0 rows affected, 1 warning (0.01 sec)则运行成功:

grant all privileges on *.* to '用户名'@'%' identified by '密码' with grant option;

7、新建连接,主机为先前查询的IPV4地址,测试连接,显示成功:

Android Studio实现Mysql(5.7)数据库增删改查(上)——用户登录功能实现

8、 新建MysqlHelp类:

Android Studio实现Mysql(5.7)数据库增删改查(上)——用户登录功能实现

9、引入jar包,在此使用mysql-connector-java-5.1.30-jar(需要适配mysql版本),自行下载并粘贴到libs文件夹下,右键选择Add Library并重新sync:

Android Studio实现Mysql(5.7)数据库增删改查(上)——用户登录功能实现

查询学生数目demo: 

在此做测试查询njtech数据库中student表用户书目为例,介绍流程:

1、新建数据库,我在此用已经创建好的数据库njtech中的student表,此部分较为简单不再赘述;

2、在com.example.myapplication文件夹下新建MySqlHelp类:

package com.example.myapplication;

/*
 * 直接连接数据库的辅助工具类
 */

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class MySqlHelp {
    // 查询用户数量的静态方法
    public static int getUserSize() {
        final String CLS = "com.mysql.jdbc.Driver"; // 引用的jar包Driver类
        final String URL = "jdbc:mysql://10.32.27.173/njtech"; //输入IPV4地址以及要查询的数据库
        final String USER = "用户名";
        final String PWD = "密码";

        int count = 0;

        try {
            Class.forName(CLS);
            Connection conn = DriverManager.getConnection(URL, USER, PWD);
            String sql = "select count(1) as sl from student";
            Statement stmt = conn.createStatement();
            ResultSet rs = stmt.executeQuery(sql);
            while (rs.next()) {
                count = rs.getInt("sl");
            }
        } catch (Exception ex) {
            ex.printStackTrace();
        }

        return count;
    }
}

3、UI样式文件:activity_main.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:orientation="vertical">

    <Button
        android:id="@+id/btnQuery"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Query" />

    <TextView
        android:id="@+id/txtQuery"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="查询结果为:"></TextView>

</LinearLayout>

4、书写MainActivity文件:

package com.example.myapplication;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    private Button btnQuery;
    private TextView txtQuery;
    private Handler handler = new Handler() {
        @Override
        public void handleMessage(@NonNull Message msg) {
//            super.handleMessage(msg);
            if (msg.what == 0) {
                txtQuery.append("\n数据库学生数量为" + (Integer) msg.obj);
            }
        }
    };

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        initView();
    }

    @Override
    public void onClick(View view) {
        switch (view.getId()) {
            case R.id.btnQuery:
                doQuery();
                break;
        }
    }

    private void initView() {
        btnQuery = findViewById(R.id.btnQuery);
        txtQuery = findViewById(R.id.txtQuery);
        btnQuery.setOnClickListener(this);
    }

    private void doQuery() {
//        单纯用以下这种方法无效,需要开启线程Thread.start
//        int count = MySqlHelp.getUserSize();
//        txtQuery.append(Integer.toString(count));
        new Thread(new Runnable() {
            @Override //重写run方法
            public void run() {
                int count = MySqlHelp.getUserSize();
                Message msg = Message.obtain();
                msg.what = 0;
                msg.obj = count;
                handler.sendMessage(msg); //向主线程发送数据
            }
        }).start(); //开启线程
    }
}

 5、运行结果:

Android Studio实现Mysql(5.7)数据库增删改查(上)——用户登录功能实现

增删改查完整案例

1、在以下网站中下载三个图标png文件,add、edit、delete:iconfont-阿里巴巴矢量图标库

        拷贝至项目的main→res→drawable文件夹中:

Android Studio实现Mysql(5.7)数据库增删改查(上)——用户登录功能实现

2、njtech数据库中student表结构预告:

Android Studio实现Mysql(5.7)数据库增删改查(上)——用户登录功能实现

Android Studio实现Mysql(5.7)数据库增删改查(上)——用户登录功能实现

3、在com.example.myapplication文件夹下新建DBOpenHelper.java:

package com.example.myapplication;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;

/*
 * MySql数据库连接辅助类:
 * 1、打开数据库;
 * 2、关闭数据库
 */
public class DBOpenHelper {
    private static final String CLS = "com.mysql.jdbc.Driver"; // 引用的jar包Driver类
    private static final String URL = "jdbc:mysql://10.32.27.173/njtech"; //输入IPV4地址以及要查询的数据库
    private static final String USER = "用户";
    private static final String PWD = "密码";

    public static Connection conn; //连接对象
    public static Statement stmt; //命令集
    public static PreparedStatement pStmt; //预编译命令集
    public static ResultSet rs; //结果集

    //取得连接的方法:
    public static void getConnection() {
        try {
            Class.forName(CLS); //CLS需为静态
            conn = DriverManager.getConnection(URL, USER, PWD);
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

    // 关闭数据库操作对象:
    public static void closeAll() {
        try {
            if (conn != null) {
                conn.close();
                conn = null;
            }
            if (stmt != null) {
                stmt.close();
                stmt = null;
            }
            if (pStmt != null) {
                pStmt.close();
                pStmt = null;
            }
            if (rs != null) {
                rs.close();
                rs = null;
            }
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
}

4、创建学生用户实体类StudentInfo.java:

package com.example.myapplication;

import java.io.Serializable;

public class StudentInfo implements Serializable {
    private String sid;
    private String spassword;
    private String sname;
    private String sgender;
    private String slocation;
    private String sphone;
    private String semail;
    private String cid;


    public StudentInfo() {
    }

    public StudentInfo(String sid, String spassword, String sname, String sgender, String slocation, String sphone, String semail, String cid) {
        this.sid = sid;
        this.spassword = spassword;
        this.sname = sname;
        this.sgender = sgender;
        this.slocation = slocation;
        this.sphone = sphone;
        this.semail = semail;
        this.cid = cid;
    }
    
    public String getSid() {
        return sid;
    }

    public void setSid(String sid) {
        this.sid = sid;
    }

    public String getSpassword() {
        return spassword;
    }

    public void setSpassword(String spassword) {
        this.spassword = spassword;
    }

    public String getSname() {
        return sname;
    }

    public void setSname(String sname) {
        this.sname = sname;
    }

    public String getSgender() {
        return sgender;
    }

    public void setSgender(String sgender) {
        this.sgender = sgender;
    }

    public String getSlocation() {
        return slocation;
    }

    public void setSlocation(String slocation) {
        this.slocation = slocation;
    }

    public String getSphone() {
        return sphone;
    }

    public void setSphone(String sphone) {
        this.sphone = sphone;
    }

    public String getSemail() {
        return semail;
    }

    public void setSemail(String semail) {
        this.semail = semail;
    }

    public String getCid() {
        return cid;
    }

    public void setCid(String cid) {
        this.cid = cid;
    }
}

5、activity_main.xml:(添加了登录相关控件)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="top"
    android:orientation="vertical">

    <Button
        android:id="@+id/btnQuery"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="Query" />

    <TextView
        android:id="@+id/txtQuery"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="查询结果为:"></TextView>

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:orientation="horizontal">

        <TextView
            android:id="@+id/textView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="账户"
            android:textColor="#03A9F4"
            android:textSize="20sp"
            android:textStyle="bold" />

        <EditText
            android:id="@+id/txtSid"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@null"
            android:ems="10"
            android:hint="请输入账户"
            android:inputType="textPersonName"
            android:text=""
            android:textSize="20sp"
            android:textStyle="bold" />
    </LinearLayout>

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:orientation="horizontal">

        <TextView
            android:id="@+id/textView2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="密码"
            android:textColor="#03A9F4"
            android:textSize="20sp"
            android:textStyle="bold" />

        <EditText
            android:id="@+id/txtSpassword"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@null"
            android:ems="10"
            android:hint="请输入密码"
            android:inputType="textPassword"
            android:textSize="20sp"
            android:textStyle="bold" />
    </LinearLayout>

    <Button
        android:id="@+id/btnLogin"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="Login" />

</LinearLayout>

6、创建学生用户数据操作类:StudentDao.java:

package com.example.myapplication;

import java.util.ArrayList;
import java.util.List;

public class StudentDao extends DBOpenHelper {
    //查询所有用户信息:
    public List<StudentInfo> getUserList() {
        List<StudentInfo> list = new ArrayList<>();
        try {
            getConnection();
            String sql = "select * from student";
            pStmt = conn.prepareStatement(sql);
            rs = pStmt.executeQuery();
            while (rs.next()) {
                StudentInfo item = new StudentInfo();
                item.setSid(rs.getString("sid"));
                item.setSpassword(rs.getString("spassword"));
                item.setSname(rs.getString("sname"));
                item.setSgender(rs.getString("gender"));
                item.setSlocation(rs.getString("slocation"));
                item.setSphone(rs.getString("sphone"));
                item.setSemail(rs.getString("semail"));
                item.setCid(rs.getString("cid"));
                list.add(item);
            }
        } catch (Exception ex) {
            ex.printStackTrace();
        } finally {
            closeAll();
        }
        return list;
    }

    public StudentInfo getUserByLogin(String sid, String spassword) {
        StudentInfo item = null;
        try {
            getConnection();
            String sql = "select * from student where sid=? and spassword=?";
            pStmt = conn.prepareStatement(sql);
            pStmt.setString(1, sid);
            pStmt.setString(2, spassword);
            rs = pStmt.executeQuery();
            if (rs.next()) {
                item = new StudentInfo();
                item.setSid(sid);
                item.setSpassword(spassword);
                item.setSname(rs.getString("sname"));
                item.setSgender(rs.getString("gender"));
                item.setSlocation(rs.getString("slocation"));
                item.setSphone(rs.getString("sphone"));
                item.setSemail(rs.getString("semail"));
                item.setCid(rs.getString("cid"));
            }
        } catch (Exception ex) {
            ex.printStackTrace();
        } finally {
            closeAll();
        }
        return item;
    }

    public void addStudent(StudentInfo item) {
        try {
            getConnection();
            String sql = "insert into student(sid,spassword,sname,sgender,slocation,sphone,semail,cid) values(?,?,?,?,?,?,?,?)";
            pStmt = conn.prepareStatement(sql);
            pStmt.setString(1, item.getSid());
            pStmt.setString(2, item.getSpassword());
            pStmt.setString(3, item.getSname());
            pStmt.setString(4, item.getSgender());
            pStmt.setString(5, item.getSlocation());
            pStmt.setString(6, item.getSphone());
            pStmt.setString(7, item.getSemail());
            pStmt.setString(8, item.getCid());
            pStmt.executeUpdate();
        } catch (Exception ex) {
            ex.printStackTrace();
        } finally {
            closeAll();
        }
    }

    public void editStudent(StudentInfo item) {
        try {
            getConnection();
            String sql = "update student set spassword=?,sname=?,sgender=?,slocation=?,sphone=?,semail=?,cid=? where sid=?";
            pStmt = conn.prepareStatement(sql);
            pStmt.setString(1, item.getSpassword());
            pStmt.setString(2, item.getSname());
            pStmt.setString(3, item.getSgender());
            pStmt.setString(4, item.getSlocation());
            pStmt.setString(5, item.getSphone());
            pStmt.setString(6, item.getSemail());
            pStmt.setString(7, item.getCid());
            pStmt.setString(8, item.getSid());
            pStmt.executeUpdate();
        } catch (Exception ex) {
            ex.printStackTrace();
        } finally {
            closeAll();
        }
    }

    public void delStudent(String sid) {
        try {
            getConnection();
            String sql = "delete from student where sid=?";
            pStmt = conn.prepareStatement(sql);
            pStmt.setString(1, sid);
            pStmt.executeUpdate();
        } catch (Exception ex) {
            ex.printStackTrace();
        } finally {
            closeAll();
        }
    }

}

7、创建显示长/短消息/对话框的类:CommonUtils.java:

package com.example.myapplication;

import android.app.AlertDialog;
import android.content.Context;
import android.widget.Toast;

public class CommonUtils {
    public static void showShortMsg(Context context, String msg) {
        Toast.makeText(context, msg, Toast.LENGTH_SHORT).show();
    }

    public static void showLongMsg(Context context, String msg) {
        Toast.makeText(context, msg, Toast.LENGTH_LONG).show();
    }

    public static void showDialogMsg(Context context, String msg) {
        new AlertDialog.Builder(context)
                .setTitle("提示信息")
                .setMessage(msg)
                .setPositiveButton("确定", null)
                .setNegativeButton("取消", null)
                .create().show();
    }
}

8、编写MainActivity.java:

package com.example.myapplication;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    private Button btnQuery;
    private TextView txtQuery;
    private Button btnLogin;
    private EditText txtSid;
    private EditText txtSpassword;
    private StudentDao dao;
    private Handler mainHandler;

    private Handler handler = new Handler() {
        @Override
        public void handleMessage(@NonNull Message msg) {
//            super.handleMessage(msg);
            if (msg.what == 0) {
                txtQuery.append("\n数据库学生数量为" + (Integer) msg.obj);
            }
        }
    };

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        initView();
    }

    @Override
    public void onClick(View view) {
        switch (view.getId()) {
            case R.id.btnQuery:
                doQuery();
                break;
            case R.id.btnLogin:
                doLogin();
                break;
        }
    }

    private void initView() {
        btnQuery = findViewById(R.id.btnQuery);
        txtQuery = findViewById(R.id.txtQuery);
        btnLogin = findViewById(R.id.btnLogin);
        txtSid = findViewById(R.id.txtSid);
        txtSpassword = findViewById(R.id.txtSpassword);
        btnQuery.setOnClickListener(this);
        btnLogin.setOnClickListener(this);
        mainHandler = new Handler(getMainLooper()); //获取主线程
        dao = new StudentDao();
    }

    private void doQuery() {
//        单纯用以下这种方法无效,需要开启线程Thread.start
//        int count = MySqlHelp.getUserSize();
//        txtQuery.append(Integer.toString(count));
        new Thread(new Runnable() {
            @Override //重写run方法
            public void run() {
                int count = MySqlHelp.getUserSize();
                Message msg = Message.obtain();
                msg.what = 0;
                msg.obj = count;
                handler.sendMessage(msg); //向主线程发送数据
            }
        }).start(); //开启线程
    }

    private void doLogin() {
        final String sid = txtSid.getText().toString().trim();
        final String spassword = txtSpassword.getText().toString().trim();
        if (TextUtils.isEmpty(sid)) {
            CommonUtils.showShortMsg(this, "请输入用户名");
            txtSid.requestFocus();
        } else if (TextUtils.isEmpty(spassword)) {
            CommonUtils.showShortMsg(this, "请输入密码");
            txtSpassword.requestFocus();
        } else {
            new Thread(new Runnable() {
                @Override //重写run方法
                public void run() {
                    final StudentInfo item = dao.getUserByLogin(sid, spassword);
                    mainHandler.post(new Runnable() {
                        @Override
                        public void run() {
                            if (item == null)
                                CommonUtils.showDialogMsg(MainActivity.this, "用户名或密码错误");
                            else
                                CommonUtils.showDialogMsg(MainActivity.this, "登录成功");
                        }
                    });
                }
            }).start(); //开启线程
        }
    }
}

9、运行界面:

Android Studio实现Mysql(5.7)数据库增删改查(上)——用户登录功能实现

         今天的分享就先到这里,下篇文章将介绍登录之后跳转新界面展示用户列表并进行详细的增删改查!文章来源地址https://www.toymoban.com/news/detail-498212.html

到了这里,关于Android Studio实现Mysql(5.7)数据库增删改查(上)——用户登录功能实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Android studio连接mysql数据库

      用Android studio连接Navicat Premium 16管理的mysql,我安装的是mysql5.7.19版本,用的包是mysql-connector-java-5.1.49-bin.jar。   在开始连接前请务必确保MySQL版本不是8.0及以上的版本!!否则会一直报错无法创建连接。   jar包也尽量选择低一些的版本,高版本我没试过,据说新版不

    2024年02月03日
    浏览(42)
  • Android studio 连接Mysql数据库

    android项目中的一些数据的存储通常可以放在数据库当中,因为数据库存储的数据比较大并且用起来也比较方便,我是在写学生宿舍管理系统时用到了数据库,在连接数据库的时候我也百度了许多方法,但都没有成功,后面是结合各个方面才连接成功,我简单分享下我的代码。

    2024年02月09日
    浏览(44)
  • Android使用SQLite数据库实现基本的增删改查

    目录 一、创建activity_main和MainActivity界面 二、实现查询/删除功能创建activity_delete和DeleteActivity 三、实现添加功能创建activity_add和AddActivity  四、实现更新功能创建activity_update和UpdateActivity 五、创建user_data类、userInfo类和增加权限 总结 activity_main如图:  MainActivity如下 layout界面

    2024年02月08日
    浏览(51)
  • Android Studio链接数据库(MySQL)步骤及问题

    1、在libs加入jdbc,右键并选择Add As Library 2、manifests中设置网络权限。 写上 3、Android4.0以后版本不支持在主线程中执行耗时操作,对数据库的操作要新开一个线程。 简单示例:(具体应用涉及到线程数据传递) new Thread(new Runnable() { @Override public void run() { String CLS=“com.mysql.j

    2023年04月13日
    浏览(47)
  • 【Android入门到项目实战--4.5】—— SQLite数据库存储实现增删改查

    目录 一、添加数据 二、更新数据 三、删除数据 四、查询数据 使用完整SQL语言操作数据库 1、添加数据  2、更新数据 3、删除数据  4、查询数据 前面学习了创建和升级数据库,本篇文章主要讲解SQLite数据库存储实现增删改查(CRUD)操作。         调用SQLiteOpenHelper的get

    2024年02月04日
    浏览(53)
  • Vue项目通过node连接MySQL数据库并实现增删改查操作

    1.创建Vue项目 Vue项目创建的详细步骤,有需要的可移步这里 2.下载安装需要的插件 下载express 下载cors,用于处理接口跨域问题 下载mysql 下载axios 3.在项目中创建server文件夹,用于搭建本地服务器 新建/server/app.js,用于配置服务器相关信息 新建/server/db/index.js,用于配置数据库

    2024年02月16日
    浏览(64)
  • MySQL 5.7详细下载安装配置以及C# MySQL数据库操作教程

    MySQL 5.7详细下载安装配置以及C# MySQL数据库操作教程 最近有个项目使用MySQL5.7,在安装MySQL的时候会遇到很多问题,博客上其实也有很多解决问题的办法,在这里我操作记录一下,方便后续使用时查看。 以下MySQL 5.7.43 详细下载安装配置教程。 访问官方网站:https://www.mysql.co

    2024年02月09日
    浏览(51)
  • node+vue3+mysql前后分离开发范式——实现对数据库表的增删改查

    大家好,我是yma16,本文分享关于 node+vue3+mysql前后分离开发范式——实现对数据库表的增删改查。 技术选型 前端:vite+vue3+antd 后端:node koa 数据库:mysql koa是一个现代的Node.js框架,可以用来构建Web应用程序。 Vue.js 是一款用于构建用户界面的开源JavaScript框架。Vue.js 3 是 Vu

    2024年02月20日
    浏览(41)
  • Android 数据库增删改查

    1、activity_main.xml 页面布局 代码 2、MainActivity.java 通过点击不同的按钮,进行不同的增删改查操作 3、UserDao.java 包含对数据库的增删改查方法 4、User.java 实体类对应着user表中的字段 5、SQLiteOpenHelper.java 创建表,更新表方法

    2023年04月08日
    浏览(31)
  • MySql数据库5.7升级到8.1遇到的问题与解决方案

    Oracle MySql安全漏洞CVE-2023-22056等漏洞爆出来后,准备对系统的MYSQL数据库进行升级,由5.7升级到8.1,本文主要介绍下升级过程中的几个问题。 通过navicat导出数据库的结构和数据,以便升级后恢复到新版本。 下载地址:MySQL :: Download MySQL Community Server 因为系统服务是通过wamp提供

    2024年02月15日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包