首页 > 数据库 >从0开始教你,如何进行前后端的数据库(MySQL)连接

从0开始教你,如何进行前后端的数据库(MySQL)连接

时间:2024-12-20 10:01:43浏览次数:6  
标签:username 留言 数据库 端的 messages content MySQL

引言

很多小伙伴会好奇,如何从零开始实现一个完整的前后端项目,并将数据存储在 MySQL 数据库中,然后我们可以进行实时的更新,查询,修改,增加删除。

比如一个简单的留言板系统,用户可以通过前端提交留言,后端将数据存储到 MySQL 中,再通过 API(如axios) 将数据展示在前端页面上。又或者一个视频留言系统,允许用户上传视频和评论,这些功能都需要前后端与数据库的协作。本篇博客将通过具体的例子,从基础出发,带你一步步完成从数据库搭建到前后端数据交互的全过程。

无论你是初学者还是有一定基础的开发者,这篇文章都能帮助你掌握前后端与数据库连接的核心技能。


一、环境准备(具体的各环境安装细节会在下节单拎出来讲解)

在开始之前,需要确保以下环境已经准备就绪:

  1. 安装 MySQL

    • 前往 MySQL 官方网站 下载并安装 MySQL。
    • 在安装过程中,设置一个安全的 root 用户密码,并选择开发者默认配置。
    • 安装完成后,启动 MySQL 服务,使用命令行或图形界面工具(如 MySQL Workbench,博主用的是Navicat界面化工具)连接数据库。
  2. 安装 Node.js

    • 前往 Node.js 官方网站 下载并安装 LTS 版本。
    • 安装完成后,在终端输入以下命令,确认安装成功:
      node -v
      npm -v
      
  3. 安装 Vue 开发环境

    • 使用 Vue CLI 快速搭建项目。首先,安装 Vue CLI:
      npm install -g @vue/cli
      
    • 创建一个 Vue 项目:
      vue create frontend
      
      根据提示选择默认配置。
  4. 测试工具

    • 推荐使用 Postman 或 curl 测试后端 API,方便调试接口。(可略)

二、创建数据库和表

  1. 登录 MySQL 打开终端,输入以下命令登录 MySQL:

    mysql -u root -p
    

    输入密码后进入 MySQL。当然,对于大部分伙伴来说肯定是用界面化操作最好(如navicat)

  2. 创建数据库 创建一个名为 example_db (任意)的数据库:

    CREATE DATABASE example_db;
    
  3. 使用数据库 切换到刚刚创建的数据库:

    USE example_db;
    
  4. 创建数据表 创建一个 messages 表,用于存储留言信息:

    CREATE TABLE messages (
        id INT AUTO_INCREMENT PRIMARY KEY,
        username VARCHAR(255) NOT NULL,
        content TEXT NOT NULL,
        created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
    );
    
  5. 插入测试数据

    INSERT INTO messages (username, content) VALUES ('Alice', 'Hello, this is my first message!');
    INSERT INTO messages (username, content) VALUES ('Bob', 'This platform is great!');
    

三、后端连接 MySQL

我们将使用 Node.js 和 mysql2 库连接 MySQL。

  1. 初始化项目 创建一个新的后端目录,并初始化项目:

    mkdir backend && cd backend
    npm init -y
    
  2. 安装依赖

    npm install express mysql2 cors
    
  3. 创建后端代码 新建 server.js 文件,写入以下代码:

    const express = require('express');
    const mysql = require('mysql2');
    const cors = require('cors');
    
    const app = express();
    const port = 3000;
    
    app.use(cors());
    app.use(express.json());
    
    // 创建数据库连接
    const db = mysql.createConnection({
        host: 'localhost',
        user: 'root',
        password: 'yourpassword',
        database: 'example_db'
    });
    
    // 测试数据库连接
    db.connect(err => {
        if (err) {
            console.error('数据库连接失败:', err);
        } else {
            console.log('成功连接到数据库');
        }
    });
    
    // 获取所有留言
    app.get('/messages', (req, res) => {
        db.query('SELECT * FROM messages', (err, results) => {
            if (err) {
                res.status(500).send(err);
            } else {
                res.json(results);
            }
        });
    });
    
    // 添加新留言
    app.post('/messages', (req, res) => {
        const { username, content } = req.body;
        db.query('INSERT INTO messages (username, content) VALUES (?, ?)', [username, content], (err, results) => {
            if (err) {
                res.status(500).send(err);
            } else {
                res.json({ id: results.insertId, username, content });
            }
        });
    });
    
    // 启动服务器
    app.listen(port, () => {
        console.log(`服务器运行在 http://localhost:${port}`);
    });
    
  4. 启动后端服务器

    node server.js
    

    访问 http://localhost:3000/messages,可以看到数据库中的留言。


四、前端连接后端

我们使用 Vue 实现前端部分。(这里是已经创建过了vue项目文件的,项目文件名为frontend)

  1. 创建组件frontend/src/components 目录下创建 MessageBoard.vue 文件,写入以下代码:

    <template>
      <div>
        <h1>留言板</h1>
        <ul>
          <li v-for="message in messages" :key="message.id">
            <strong>{{ message.username }}</strong>: {{ message.content }}
          </li>
        </ul>
        <form @submit.prevent="addMessage">
          <input v-model="username" placeholder="用户名" required />
          <textarea v-model="content" placeholder="留言内容" required></textarea>
          <button type="submit">提交</button>
        </form>
      </div>
    </template>
    
    <script>
    import axios from 'axios';
    
    export default {
      data() {
        return {
          messages: [],
          username: '',
          content: ''
        };
      },
      created() {
        this.fetchMessages();
      },
      methods: {
        async fetchMessages() {
          try {
            const response = await axios.get('http://localhost:3000/messages');
            this.messages = response.data;
          } catch (error) {
            console.error('Error fetching messages:', error);
          }
        },
        async addMessage() {
          try {
            const newMessage = { username: this.username, content: this.content };
            await axios.post('http://localhost:3000/messages', newMessage);
            this.messages.push(newMessage);
            this.username = '';
            this.content = '';
          } catch (error) {
            console.error('Error adding message:', error);
          }
        }
      }
    };
    </script>
    
  2. 集成组件 在src/ App.vue 中引入该组件:

    <template>
      <MessageBoard />
    </template>
    
    <script>
    import MessageBoard from './components/MessageBoard.vue';
    
    export default {
      components: {
        MessageBoard
      }
    };
    </script>
    
  3. 运行项目frontend 目录下启动项目:

    npm run serve
    

    在浏览器中访问 http://localhost:8080,可以看到留言板功能。


五、总结

通过上述步骤,我们实现了一个简单的留言板系统,涵盖了以下内容:

  1. 使用 MySQL 创建数据库和数据表

    • 首先,创建一个 MySQL 数据库,用于存储留言信息。
    • 在数据库中创建一个表,定义留言的字段,如留言内容、用户信息、留言时间等。
  2. 使用 Node.js 开发后端接口并连接数据库

    • 使用 Node.js 和 Express 框架开发后端 API。
    • 安装并配置 MySQL 驱动(如 mysql2sequelize)来连接数据库。
    • 创建相关的 API 接口,例如 GET 用于获取留言列表,POST 用于添加留言等。
    • 后端与数据库交互,处理数据的增删改查(CRUD)操作。
  3. 使用 Vue 开发前端页面,与后端进行交互

    • 使用 Vue.js 创建前端页面,展示留言列表,并提供用户输入留言的表单。
    • 使用 axiosfetch 等工具来发送 HTTP 请求与后端接口交互。
    • 将用户的留言显示在前端页面上,并实时更新。

通过这样的实现,用户可以在前端输入留言,后端接收并存储到 MySQL 数据库中,留言列表也会在页面上实时显示更新。这是一个简单的 CRUD 应用,适合入门学习 Web 开发、数据库管理和前后端交互。

标签:username,留言,数据库,端的,messages,content,MySQL
From: https://blog.csdn.net/qq_73779662/article/details/144550141

相关文章

  • 使用 1panel图形化部署LobeChat服务端数据库版
    LobeChat它是什么?LobeChat是一个现代化设计的开源ChatGPT/LLMs聊天应用与开发框架,支持语音合成、多模态、可扩展的(functioncall)插件系统,一键免费拥有你自己的ChatGPT/Gemini/Claude/Ollama应用。它的特性?多模型服务商支持;支持本地大语言模型(LLM);模型视觉识别......
  • Hive其三,数据库操作,小技巧设置,加载数据等操作
    目录一、操作数据库二、关于表的操作1)关于字符类型的2)创建表3)修改表4)删除表5)小案例演示三、Hive中经常使用的小技巧的设置四、加载数据1)加载本地数据:2)从HDFS加载到Hive中:3)将数据直接放入表对应的文件夹下4)从其他表中加载数据5)克隆表数据五、通过hive进行......
  • MySQL锁-行级锁、表级锁、全局锁
    MySQL锁机制MySQL中锁主要分为以下几种:全局锁表级锁表锁元数据锁意向锁行级锁行锁间隙锁临建锁–首先需要了解共享锁和排他锁共享锁和排他锁在MySQL中锁可以分为两大类,分别是shared(S)locks和exclusive(X)locks。S锁,称为共享锁(也被称为读锁),事务在读......
  • 【零基础学Mysql】一文了解数据库及其常用数据类型
    大家好,我是whisperrr.文章目录一.了解数据库1.1数据库三层结构-破除MySQL神秘1.2创建数据库1.3查看、删除数据库1.4备份恢复数据库二.Mysql常用数据类型(列类型)2.1数值型(整数)的基本使用2.1.1如何定义一个有符号的整数2.1.2如何定义一个无符号的整数2.2bit(位)类......
  • ssm护理管理系统674u3--程序+源码+数据库+调试部署+开发环境
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、研究背景与意义随着医疗技术的不断进步和人们对医疗服务质量的日益提高,护理管理作为医疗服务的重要组成部分,其重要性日益凸显。然而,传统的护理......
  • ssm公交查询系统12e14--程序+源码+数据库+调试部署+开发环境
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、项目背景随着城市交通的日益繁忙,公交系统作为城市交通的重要组成部分,承担着大量的出行需求。然而,传统的公交查询方式存在信息更新不及时、查询......
  • ssm个性化音乐系统658nv(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、研究背景与意义随着数字音乐产业的快速发展,人们对音乐的个性化需求日益增长。传统的音乐播放方式已无法满足用户对音乐内容的个性化追求。因此......
  • sse 浏览器端技术使用,Server-Sent Events ,EventSource,来建立长连接保持与服务端的通讯
    Server-SentEvents(SSE)是一种允许服务器向客户端推送更新的技术。它使用HTTP协议,通过一个持久的HTTP连接,服务器可以在任何时间发送新的事件到客户端。SSE通常用于实时更新,如股票价格、新闻更新等。以下是一个简单的SSE使用示例:服务器端(Node.js+Express)constex......
  • mysql期末大题满分指南(ER图关系模型+mysql代码题)
    好久没有写博客最近开始期末周,完成期末项目、答辩、准备笔试考试。所以也是信息收集学了将就1/2 昨天晚上刚刚结束了mysql期末考试就此来写一个博客。题型:一、选择、填空、判断、简答题推荐这位老哥的题库非常全考试做选择题和填空题都非常顺利。预计选择、填空、判......
  • 225Python大学生社团管理系统(Pycharm Flask Django Vue mysql)
    文章目录项目介绍和开发技术介绍具体实现截图开发技术开发与测试:设计思路系统测试可行性分析核心代码部分展示文章目录/写作提纲参考源码/演示视频获取方式项目介绍和开发技术介绍对于网站的前台设计,要保证主界面的整洁有序,能够抓住人的眼球,不会产生视觉疲劳,更重要......