Node服务连接Mysql数据库

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 本文介绍了如何在Node服务中连接MySQL数据库,并实现心跳包连接机制。

新建一个express项目;

express myNodeDome

进入文件夹

cd myNodeDome

下载依赖

npm  i

首先下载mysql包

npm i mysql

新建Db.js

//引入mysql包
const mysql = require('mysql')
//链接配置
var connection = mysql.createConnection({
   
    host: 'localhost', //ip
    user: 'root', //用户名
    password: '123456',//密码
    database: 'test' //数据库名
});

connection.connect();//建立链接
//进行查询
connection.query('SELECT * from user where id =2', function (error, results, fields) {
   
    if (error) throw error;
    console.log('The solution is: ', results);
});

查寻语句

SELECT * from user where id =2

在app.js中引用测试,因为项目运行时会自动走一遍引入的js,所以直接会运行;

var Db = require('./public/javascripts/Db')

在这里插入图片描述

数据库信息
在这里插入图片描述
查询结果:
在这里插入图片描述

//改
connection.query('update user set username="666", password="66666" where id=1', function (error, results, fields) {
   
    if (error) throw error;
    console.log('The solution is: ', results);
});
//查
connection.query('SELECT * from user where id =2', function (error, results, fields) {
   
    if (error) throw error;
    console.log('The solution is: ', results);
});
//增
connection.query('insert into user values (null,8868,8886)', function (error, results, fields) {
   
    if (error) throw error;
    console.log('The solution is: ', results);
});
//删
connection.query('delete from  user where id=1', function (error, results, fields) {
   
    if (error) throw error;
    console.log('The solution is: ', results);
});

封装sql语句

第一个参数是sql,第二个参数是一个回调函数

/**
 * 
 * @param {String} str sql语句
 */
const DBFun = (str,fun) => {
   
    connection.query(str, function (error, results, fields) {
   
        if (error) throw error;
        console.log('The solution is: ', results);
        fun(results)
    });
}
//promise形式封装
const DBFunPro = (str) => {
   
    console.log("=========开始查找sql============");
    try {
   
        return new Promise((resolve, reject) => {
   
            connection.query(str, function (error, results, fields) {
   
                if (error) {
   
                    reject([{
    data: "数据库查询报错" }])
                };
                resolve(results)
            });
        })
    } catch{
   
        console.log("请注意sql报错")
    }
}
module.exports={
   
    DBFun,DBFunPro 
}

使用:

var express = require('express');
const {
    v4: uuidv4 } = require('uuid');
const md5 = require('md5');
var router = express.Router();
var Db = require('../public/javascripts/Db')
var endMassage = require('../public/javascripts/endMassage')

//queryId  通过id查询 user 用户信息
router.get('/queryId', function (req, res, next) {
   
  let {
    id } = req.query
  Db.DBFun(`select * from user where id=${
     id}`, (data) => {
   
    res.send(endMassage(data))
  })
});

//登录注册接口  有账号 直接登录  没账号 注册 
router.get('/login', function (req, res, next) {
   
  let {
    username, password } = req.query
  Db.DBFun(`select username,password,uuid from user where username='${
     username}'`, (data) => {
   
    if (data.length) {
   
      if (data[0].password == md5(password)) res.send(endMassage({
    data: "登录成功",code:1 }))
      else res.send(endMassage({
    data: "密码错误", code: 0, uuidStr: data[0].uuid}))

    } else {
   
      let uuidStr = uuidv4()
      let passwordStr = md5(password)
      Db.DBFun(`insert into user(password,username,uuid) values ('${
     passwordStr}','${
     username}','${
     uuidStr}') `, (insertInfo) => {
   
        res.send(endMassage({
    data: "注册成功", uuidStr }))
      })
    }
  })
});
router.post('/postInputItem', (req, res) => {
   
  let {
    name, sex, tel, uuid } = req.body
  Db.DBFun(`select uuid from user_info where uuid='${
     uuid}'`, (data) => {
   
    if (data.length > 0) {
   
      Db.DBFun(`update  user_info set  name='${
     name}',sex='${
     sex}',tel='${
     tel}' where uuid='${
     uuid}'`, (data) => {
   
        res.send(endMassage({
    data: "信息更新成功" }))
      })
    } else {
   
      Db.DBFun(`insert into user_info(uuid,name,sex,tel) values ('${
     uuid}','${
     name}','${
     sex}','${
     tel}')`, (data) => {
   
        res.send(endMassage({
    data: "信息插入成功" }))
      })
    }
  })
})
module.exports = router;
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
9天前
|
关系型数据库 MySQL Linux
Linux系统如何设置自启动服务在MySQL数据库启动后执行?
【10月更文挑战第25天】Linux系统如何设置自启动服务在MySQL数据库启动后执行?
52 3
|
9天前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据需求选择最合适的方法。通过具体案例,展示了编译源码安装的灵活性和定制性。
45 2
|
13天前
|
SQL Java 关系型数据库
java连接mysql查询数据(基础版,无框架)
【10月更文挑战第12天】该示例展示了如何使用Java通过JDBC连接MySQL数据库并查询数据。首先在项目中引入`mysql-connector-java`依赖,然后通过`JdbcUtil`类中的`main`方法实现数据库连接、执行SQL查询及结果处理,最后关闭相关资源。
|
16天前
|
SQL JavaScript 关系型数据库
node博客小项目:接口开发、连接mysql数据库
【10月更文挑战第14天】node博客小项目:接口开发、连接mysql数据库
|
22天前
|
Java 关系型数据库 MySQL
【编程基础知识】Eclipse连接MySQL 8.0时的JDK版本和驱动问题全解析
本文详细解析了在使用Eclipse连接MySQL 8.0时常见的JDK版本不兼容、驱动类错误和时区设置问题,并提供了清晰的解决方案。通过正确配置JDK版本、选择合适的驱动类和设置时区,确保Java应用能够顺利连接MySQL 8.0。
102 1
|
14天前
|
NoSQL 前端开发 JavaScript
Node.js 连接 MongoDB
10月更文挑战第20天
22 0
|
25天前
|
NoSQL 前端开发 JavaScript
Node.js 连接 MongoDB
10月更文挑战第9天
43 0
|
25天前
|
SQL JavaScript 关系型数据库
Node.js 连接 MySQL
10月更文挑战第9天
17 0
|
3月前
|
JavaScript 关系型数据库 MySQL
node连接mysql,并实现增删改查功能
【8月更文挑战第26天】node连接mysql,并实现增删改查功能
52 3
|
6月前
|
安全 关系型数据库 MySQL
node实战——后端koa结合jwt连接mysql实现权限登录(node后端就业储备知识)
node实战——后端koa结合jwt连接mysql实现权限登录(node后端就业储备知识)
104 3