基于nodejs的web服务器,连接使用数据库

191 阅读3分钟

前期准备

1、MySQL服务安装并启动
2、安装MySQL可视化工具(MySQL Workbench或者Navicat)
3、可视化工具连接MySQL(可直观看出代码是否运行成功)
4、创建一个数据库(本文案例中的数据库名称为users)
5、创建一个测试表(本文案例中的表名称为users)

相关文章

基于nodejs使用express 创建web服务器
基于nodejs的web服务器,连接使用redis
基于nodejs的web服务器,实现用户登陆注册等接口功能

Github代码仓库地址

一、项目中安装连接数据库

1、安装数据库

npm i mysql

2、连接数据库

这里建议单独新建个文件database.js来维护数据库的连接

const mysql = require('mysql')

const database = mysql.createPool({
    host: '127.0.0.1',
    user: 'your user name', // 你当前数据库连接的用户名
    password: 'your password', // 你当前数据库连接的密码
    database: 'users'
})

// 关闭数据库(一般不需要执行关闭操作,程序运行结束会自动关闭)
// database.end()

module.exports = database

二、操作数据库

1、操作方法及参数解析

在MySQL中,database.query()方法是用于执行SQL查询的主要方法。它接受多个参数,下面对这些参数进行解析,该方法有三个参数:query,values,callback
1、SQL查询语句(query):作为第一个参数传递给database.query()方法的是要执行的SQL查询语句,可以是SELECT、INSERT、UPDATE、DELETE等各种SQL语句,当sql语句中存在占位符'?'时,此时需要第二个参数将实际值依次插入占位符处,若sql语句中没有占位符,第二个参数不传
2、参数(values):对于带有占位符(例如?)的SQL语句,您可以通过在查询语句中使用占位符,并将实际值作为第二个参数传递给database.query()方法来向查询提供参数,当只有一个占位符时可以直接values=参数,也可以values=[参数]。当有多个占位符时,必须传入一个数组,数组顺序对应占位符顺序,即values=[参数1,参数2,参数3]
3、回调函数(callback):作为最后一个参数传递给database.query()方法的是一个回调函数,用于处理查询结果或错误。回调函数接收两个参数:错误对象(如果有错误)和查询结果

2、基本数据库操作

1、插入数据

// 插入整个数据行,直接插入整个对象方式
const data = { name: 'John', email: 'john@example.com' }
const query = 'INSERT INTO users SET ?'
database.query(query, data, (error, results) => {
    if (error) throw error
    console.log('Data inserted:', results)
})

// 插入整个数据行,分别插入方式
const query = 'INSERT INTO users (name,email) VALUES (?,?)'
const values = ['John', 'john@example.com']
database.query(query, values, (error, results) => {
    if (error) throw error
    console.log('Data inserted:', results)
})

// 插入部分数据行
const query = 'INSERT INTO users SET name=?, email=?'
const values = ['John', 'john@example.com']
database.query(query, values, (error, results) => {
    if (error) throw error
    console.log('Data inserted:', results)
})

2、查询数据

// 查询表中所有数据
const query = 'SELECT * FROM users'
database.query(query, (error, results) => {
    if (error) throw error
    console.log('Data fetched:', results)
})

// 按条件查询整行
const query = 'SELECT * FROM users where userId=?'
const userId = '123'
database.query(query, [userId], (error, results) => {
    if (error) throw error
    console.log('Data fetched:', results)
})

// 按条件查询行中某几列
const query = 'SELECT name, email FROM users WHERE userId=?'
const userId = '123'
database.query(query, [userId], (error, results) => {
    if (error) throw error
    console.log('Data fetched:', results)
})

// 模糊查询
const query = 'SELECT name, email FROM users WHERE age>?'
const age = 18
database.query(query, [age], (error, results) => {
    if (error) throw error
    console.log('Data fetched:', results)
})

3、更新数据

// 更新单列数据
const query = 'UPDATE users SET name=? WHERE id=?'
const values = ['Jane', 1000]
database.query(query, values, (error, results) => {
    if (error) throw error
    console.log('Data updated:', results)
})

// 更新多列数据
const query = 'UPDATE users SET name=?, email=? WHERE id=?'
const values = ['Jane', 'jane@example.com', 1000]
database.query(query, values, (error, results) => {
    if (error) throw error
    console.log('Data updated:', results)
})

// 更新整行数据
const query = 'UPDATE users SET ? WHERE id=?'
const values = [{ name: 'Jane', email: 'jane@example.com' }, 1000]
database.query(query, values, (error, results) => {
    if (error) throw error
    console.log('Data updated:', results)
})

4、删除数据 注意:删除数据库数据无法恢复,建议不使用删除数据库的方式删除数据,可使用删除标志进行软删除

// 删除整行数据
const query = 'DELETE FROM users WHERE id=?'
const userId = 1000
database.query(query, userId, (error, results) => {
    if (error) throw error
    console.log('Data deleted:', results)
})