nodeJs操作mysql

271 阅读2分钟

数据准备

使用数据可视化工具创建数据库node_mysql_test,创建客户表customers,包含id,name,age三个字段

目录结构

新建node-mysql文件夹,打开终端定位到node-mysql目录下执行

npm i mysql -d

node-mysql增删改查

新增数据

add.js

const mysql = require('mysql');
//mysql连接配置
const connection = mysql.createConnection({
    host: 'localhost', //主机名
    user: 'root', //用户名
    password: '',  //密码
    database: 'node_mysql_test' //数据库名
})
//连接数据库
connection.connect();
let sql = 'INSERT INTO CUSTOMERS(ID, NAME, AGE) VALUES (?, ?, ?)';
let params = [1, '李四', 20];
connection.query(sql, params, (err,data) => {
    if(err) throw err;
    console.log('新增成功', data);
})
connection.end();//关闭数据库

终端进入node-mysql目录下执行node add.js查看控制台显示新增成功和返回信息

删除数据

delete.js

const mysql = require('mysql');
const connection = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: '',
    database: 'node_mysql_test'
});
connection.connect();
let sql = 'DELETE FROM CUSTOMERS WHERE ID = 1';
connection.query(sql, (err,data) => {
    if(err) throw err;
    console.log('删除成功', data)
})
connection.end();

修改数据

update.js

const mysql = require('mysql');
const connection = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: '',
    database: 'node_mysql_test'
});
connection.connect();
let sql = 'UPDATE CUSTOMERS SET NAME = ? WHERE ID = 1';
let params = ['change'];
connection.query(sql, params, (err,data) => {
    if(err) throw err;
    console.log('编辑成功', data)
})
connection.end();

查询数据

search.js

const mysql = require('mysql');
const connection = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: '',
    database: 'node_mysql_test'
});
connection.connect();
let sql = 'SELECT * FROM  CUSTOMERS';
connection.query(sql, (err,data) => {
    if(err) throw err;
    console.log('查询成功', data)
})
connection.end();

其他

mysql忘记root密码解决方法见juejin.cn/post/684490…

node操作mysql完成登录注册功能

代码放在github.com/itwshen/nod…,backend存放node端,frontend存放静态页面

在backend目录下执行node index.js启动服务端,frontend目录下执行live-server(一个具有实时加载功能的小型服务器,npm i live-server -g安装)即可预览界面

1. 在mysql中新建user表

2. 注册功能

界面端:

$(function(){
    $('.register').click(function(){
        let username = $('#username').val().trim(),
            password = $('#password').val().trim();
        if(!username) {
            alert('请输入用户名!');
            $('#username').focus();
        }else if(!password){
            alert('请输入密码!');
            $('#password').focus();
        }else {
            //发送请求注册用户信息
            $.ajax({
                url: 'http://localhost:3000/register',
                type: 'post',
                dataType: 'json',
                data: {
                    username: username,
                    password: password
                },
                success: function(res) {
                    if(res.code === 1) {
                        alert('注册成功,前往登录!');
                        window.location.href = 'index.html';
                    }else {
                        alert(res.msg);
                    }
                }
            })
        }
    })
})

node端:

//注册
let username1 = params.username,
    password1 = params.password;
    now = getNow();
if(!username1 || !password1) {
    res.end(JSON.stringify({
        code: 0,
        msg: '用户名或密码不能为空!'
    }));
}else {
    let querySql = 'SELECT * FROM USER';
    connection.query(querySql, (err, data) => {
        if(err) throw err;
        //node mysql查询数据会带RowDataPacket  使用JSON序列化可以去除
        let result = JSON.parse(JSON.stringify(data));
        //判断用户名是否重复
        let flag = false;
        result.length && result.forEach((item) => {
            if(item.user_name == username1) {
                flag = true;
            }
        });
        if(flag) {
            res.end(JSON.stringify({
                code: 0,
                msg: '用户名已存在!'
            }));
        }else {
            //注册
            let addSql = 'INSERT INTO USER (USER_NAME, USER_PASSWORD, TIME) VALUES (?, ?, ?)';
            let addParams = [username1, password1, now];
            connection.query(addSql, addParams, (err, data) => {
                if(err) throw err;
                res.write(JSON.stringify({
                    code: 1,
                    msg: '注册成功!'
                }));
                res.end();
            });
        }
    });
}

3. 登录功能

界面端:

$(function(){
	//登录点击事件
	$('.login').click(function(){
		let username = $('#username').val().trim(),
			password = $('#password').val().trim();
		if(!username) {
			alert('请输入用户名!');
		}else if(!password) {
			alert('请输入密码!');
		}else {
			$.ajax({
				url: 'http://localhost:3000/login',
				type: 'post',
				dataType: 'json',
				data: {
					username,
					password
				},
				success: function (res) {
					if(res.code === 1) {
						alert('登录成功,跳转到主页');
					}else {
						alert(res.msg);
					}
				},
				error: function(err) {
					alert(err);
				}
			})
		}
	})
})

node端:

//登录验证
let {username, password} = params;
if(!username || !password) {
    res.end(JSON.stringify({
        code: 0,
        msg: '用户名和密码不能为空!'
    }));
}else {
    let sql = 'SELECT * FROM USER WHERE USER_NAME = ? AND USER_PASSWORD = ?',
        sqlParams = [username, password];
    connection.query(sql, sqlParams, (err, data) => {
        if(err) throw err;
        let result = JSON.parse(JSON.stringify(data));
        if(!result.length) {
            res.end(JSON.stringify({
                code: 0,
                msg: '用户名或密码不存在!'
            }));
        } else{
            res.end(JSON.stringify({
                code: 1,
                msg: '登录成功!'
            }));
        }
    })
}

参考链接 Node - 从0基础到实战企业官网