Node.js数据库开发实战之mysql

举报
lwq1228 发表于 2021/09/10 15:13:11 2021/09/10
【摘要】 Node.js数据库开发实战之mysql

一、创建项目

(1)使用WebStorm创建node-mysql项目

(2)创建完成后,项目会自动打开,如下图

二、node.js使用mysql

1、安装mysql模块

Node.js连接MySQL使用的是mysql模块,在WebStorm的Terminal中使用npm安装mysql:

npm install mysql

安装完成如下图:

2、连接数据库

mysql模块通过createConnection()方法创建MySQL连接。如下代码就和服务器172.16.2.105的mysql数据库node_test建立了连接。

测试代码:

//引入mysql模块
const mysql = require('mysql');
//创建连接
const connection = mysql.createConnection({
    host: '172.16.2.105',
    user: 'root',
    password: 'root',
    database: 'node_test'
});
//连接mysql
connection.connect(function (err) {
    //连接出错的处理
    if (err) {
        console.error('连接错误:' + err.stack);
        return;
    }
    console.log('连接成功,线程ID为:' + connection.threadId);
});

测试结果:

代码说明:

createConnection()方法用于创建连接,connection.connect()方法用于判断连接是否成功。createConnection()方法用于接受一个json对象参数。json对象主要使用的字段有:

host:需要连接数据库地址,默认为localhost
port:连接地址端口默认为3306
user:连接MySQL时使用的用户名
password:用户名对应的密码
database:所需要连接的数据库的名称

3、关闭数据库连接

(1)通过end()方法可以正常地终止一个连接

connection.end(function (err) {
    console.log(err);
});

(2)使用destroy()方法也可以终止连接。该方法会立即终止底层套接字,不会触发更多的事件和回调函数。

connection.destroy();

4、保存数据

连接MySQL成功后,就需要通过Node.js来操作数据库了。mysql模块提供了一个名为query()的方法,可以用来执行SQL语句,从而对MySQL数据库进行相应的操作。

测试代码:

//引入mysql模块
const mysql = require('mysql');
//创建连接
const connection = mysql.createConnection({
    host: '172.16.2.105',
    user: 'root',
    password: 'root',
    database: 'node_test'
});
//连接mysql
connection.connect();

const addSql = 'insert into users(name,age,sex) values(?,?,?)';
const addSqlParams = ['张三', 18, '男'];

// 添加数据
connection.query(addSql, addSqlParams, function (err, result) {
    if (err) {
        console.log('数据保存失败:', err.message);
        return;
    }
    console.log('数据保存成功:', result);
});

connection.end();

测试结果:

提示保存成功,查看数据库,可以看到数据已经保存到users表中:

代码说明:

query方法可以根据不同的sql执行不同的操作,除了新增数据外也支持修改、查询和删除数据。

4、查询数据

使用mongoose可以查询mongodb相应的数据。如下代码可以将users这个collection中的所有文档查询出来:

测试代码1:

//引入mysql模块
const mysql = require('mysql');
//创建连接
const connection = mysql.createConnection({
    host: '172.16.2.105',
    user: 'root',
    password: 'root',
    database: 'node_test'
});
//连接mysql
connection.connect();

const selectSql = 'select name,age,sex from users';

// 添加数据
connection.query(selectSql, function (err, result) {
    if (err) {
        console.log('数据查询失败:', err.message);
        return;
    }
    console.log('数据查询成功,结果集为:', result);
});

connection.end();

测试结果1:

代码说明1:

这段代码通过sql查询users表中所有数据,也可以给sql添加查询条件进行精确查询,代码如下:

测试代码2:

//引入mysql模块
const mysql = require('mysql');
//创建连接
const connection = mysql.createConnection({
    host: '172.16.2.105',
    user: 'root',
    password: 'root',
    database: 'node_test'
});
//连接mysql
connection.connect();

const selectSql = 'select name,age,sex from users where name=?';
const selectSqlParams = ['张三'];

// 添加数据
connection.query(selectSql, selectSqlParams, function (err, result) {
    if (err) {
        console.log('数据查询失败:', err.message);
        return;
    }
    console.log('数据查询成功,结果集为:', result);
});

connection.end();

运行这段代码只查询出name是”张三“的数据:

5、修改数据

测试代码:

//引入mysql模块
const mysql = require('mysql');
//创建连接
const connection = mysql.createConnection({
    host: '172.16.2.105',
    user: 'root',
    password: 'root',
    database: 'node_test'
});
//连接mysql
connection.connect();

const updateSql = 'update users set name=?,age=?,sex=? where id=?';
const updateSqlParams = ['赵六', 23, '男', 3];

// 添加数据
connection.query(updateSql, updateSqlParams, function (err, result) {
    if (err) {
        console.log('数据更新失败:', err.message);
        return;
    }
    console.log('数据更新成功:', result);
});

connection.end();

测试结果:

通过Navicat查看数据库,数据已经更新:

6、删除数据

测试代码:

//引入mysql模块
const mysql = require('mysql');
//创建连接
const connection = mysql.createConnection({
    host: '172.16.2.105',
    user: 'root',
    password: 'root',
    database: 'node_test'
});
//连接mysql
connection.connect();

const deleteSql = 'delete from users where id=?';
const deleteSqlParams = [3];

// 添加数据
connection.query(deleteSql, deleteSqlParams, function (err, result) {
    if (err) {
        console.log('数据删除失败:', err.message);
        return;
    }
    console.log('数据删除成功:', result);
});

connection.end();

测试结果:

通过Navicat查看数据库,id为3的数据已经删除:

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。