Node服务连接Mysql数据库

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
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
目录
相关文章
|
28天前
|
SQL Java 数据库连接
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率。本文介绍了连接池的工作原理、优势及实现方法,并提供了HikariCP的示例代码。
44 3
|
29天前
|
关系型数据库 MySQL Linux
Linux系统如何设置自启动服务在MySQL数据库启动后执行?
【10月更文挑战第25天】Linux系统如何设置自启动服务在MySQL数据库启动后执行?
74 3
|
29天前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据需求选择最合适的方法。通过具体案例,展示了编译源码安装的灵活性和定制性。
85 2
|
28天前
|
Java 数据库连接 数据库
深入探讨Java连接池技术如何通过复用数据库连接、减少连接建立和断开的开销,从而显著提升系统性能
在Java应用开发中,数据库操作常成为性能瓶颈。本文通过问题解答形式,深入探讨Java连接池技术如何通过复用数据库连接、减少连接建立和断开的开销,从而显著提升系统性能。文章介绍了连接池的优势、选择和使用方法,以及优化配置的技巧。
27 1
|
28天前
|
Java 数据库连接 数据库
Java连接池在数据库性能优化中的重要作用。连接池通过预先创建和管理数据库连接,避免了频繁创建和关闭连接的开销
本文深入探讨了Java连接池在数据库性能优化中的重要作用。连接池通过预先创建和管理数据库连接,避免了频繁创建和关闭连接的开销,显著提升了系统的响应速度和吞吐量。文章介绍了连接池的工作原理,并以HikariCP为例,展示了如何在Java应用中使用连接池。通过合理配置和优化,连接池技术能够有效提升应用性能。
42 1
|
1月前
|
SQL 关系型数据库 数据库连接
"Nacos 2.1.0版本数据库配置写入难题破解攻略:一步步教你排查连接、权限和配置问题,重启服务轻松解决!"
【10月更文挑战第23天】在使用Nacos 2.1.0版本时,可能会遇到无法将配置信息写入数据库的问题。本文将引导你逐步解决这一问题,包括检查数据库连接、用户权限、Nacos配置文件,并提供示例代码和详细步骤。通过这些方法,你可以有效解决配置写入失败的问题。
56 0
|
18天前
|
SQL 关系型数据库 MySQL
12 PHP配置数据库MySQL
路老师分享了PHP操作MySQL数据库的方法,包括安装并连接MySQL服务器、选择数据库、执行SQL语句(如插入、更新、删除和查询),以及将结果集返回到数组。通过具体示例代码,详细介绍了每一步的操作流程,帮助读者快速入门PHP与MySQL的交互。
32 1
|
20天前
|
SQL 关系型数据库 MySQL
go语言数据库中mysql驱动安装
【11月更文挑战第2天】
35 4
|
2月前
|
存储 关系型数据库 MySQL
Mysql(4)—数据库索引
数据库索引是用于提高数据检索效率的数据结构,类似于书籍中的索引。它允许用户快速找到数据,而无需扫描整个表。MySQL中的索引可以显著提升查询速度,使数据库操作更加高效。索引的发展经历了从无索引、简单索引到B-树、哈希索引、位图索引、全文索引等多个阶段。
64 3
Mysql(4)—数据库索引
|
27天前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第27天】本文深入探讨了MySQL的索引策略和查询性能调优技巧。通过介绍B-Tree索引、哈希索引和全文索引等不同类型,以及如何创建和维护索引,结合实战案例分析查询执行计划,帮助读者掌握提升查询性能的方法。定期优化索引和调整查询语句是提高数据库性能的关键。
150 1