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

网友投稿 755 2022-05-30

一、创建项目

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

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

二、node.js使用mysql

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的数据已经删除:

JavaScript MySQL SQL 数据库

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:白话Elasticsearch03- 结构化搜索之基于bool组合多个filter条件来搜索数据
下一篇:【 FPGA 】FIR 滤波器结构和优化(二)之系数填充(Coefficient Padding)
相关文章