Node 连接mysql数据库

本文涉及的产品
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
RDS AI 助手,专业版
简介: JXcore作者已经不维护了。github地址 https://github.com/jxcore/jxcore所以下面是Node.js连接MysqlNode.js 连接Mysql使用的内容作者依旧在维护 安装 PS C:\Users\mingm\Desktop\test> npm install.

JXcore作者已经不维护了。
github地址 https://github.com/jxcore/jxcore
所以下面是Node.js连接Mysql
Node.js 连接Mysql
使用的内容作者依旧在维护

安装

PS C:\Users\mingm\Desktop\test> npm install mysql --save
npm WARN saveError ENOENT: no such file or directory, open 'C:\Users\mingm\Desktop\test\package.json'
npm WARN enoent ENOENT: no such file or directory, open 'C:\Users\mingm\Desktop\test\package.json'
npm WARN test No description
npm WARN test No repository field.
npm WARN test No README data
npm WARN test No license field.

+ mysql@2.16.0
updated 1 package and audited 296 packages in 2.366s
found 0 vulnerabilities

PS C:\Users\mingm\Desktop\test>

npm地址 https://www.npmjs.com/package/mysql
github 地址 https://github.com/mysqljs/mysql
文档地址 https://www.npmjs.com/package/mysql#install 查看一些文档的时候需要在这里查看

连接数据库

由于本地已经有mysql了。

PS C:\Users\mingm\Desktop\test> node test.js
The solution is: 2
var mysql = require('mysql');
var connection = mysql.createConnection({
    host: 'student.iming.info',    // 连接的服务器
    user: 'root',    // 用户名
    password: '********',    // 用户密码
    database: 'ming'    // 选择的库
});

connection.connect();    // 创建一个mysql的线程

connection.query('SELECT 1 + 1 AS solution', (err, results, fields) => {
    if (err) {
        throw  err;
    };

    console.log('The solution is:', results[0].solution);    // 返回第一条记录的solution列的内容
});

好啦。这就完成了一次连接,使用的是npm下载的mysql模块,使用的是c++语言编写的

数据库操作

PS C:\Users\mingm\Desktop\test> node test.js
------------SELECT-------------
[ RowDataPacket {
    id: 1,
    name: 'Google',
    url: 'https://www.google.cm/',
    alexa: 1,
    country: 'USA' },
  RowDataPacket {
    id: 2,
    name: '淘宝',
    url: 'https://www.taobao.com/',
    alexa: 13,
    country: 'CN' },
  RowDataPacket {
    id: 3,
    name: '微博',
    url: 'http://weibo.com/',
    alexa: 20,
    country: 'CN' },
  RowDataPacket {
    id: 5,
    name: 'Facebook',
    url: 'https://www.facebook.com/',
    alexa: 3,
    country: 'USA' } ]
--------------------------------
var mysql = require('mysql');
var connection = mysql.createConnection({
    host: 'student.iming.info',    // 连接的服务器
    user: 'root',    // 用户名
    password: '******************',    // 用户密码
    database: 'ming'    // 选择的库
});

connection.connect();    // 创建一个mysql的线程

// 推荐查询语句使用大写。方便分辨和后期的维护
var sql = 'SELECT * FROM websites';    // sql命令
connection.query(sql, (err, results, fields) => {    // results 为查询的结果 fields 为返回的信息
    if (err) {
        console.log('[SELECT ERROR] -', err.message);
        return;
    };

    console.log('------------SELECT-------------');    
    console.log(results);    // 输出查询的结果
    console.log('--------------------------------');
});

下面该是数据库的原子操作了。即CULD

插入数据

PS C:\Users\mingm\Desktop\test> node test.js
------------------INSERT--------------------------
INSERT ID OkPacket {
  fieldCount: 0,
  affectedRows: 1,
  insertId: 6,
  serverStatus: 2,
  warningCount: 0,
  message: '',
  protocol41: true,
  changedRows: 0 }
-------------------------------------------------


PS C:\Users\mingm\Desktop\test>
var mysql = require('mysql');
var connection = mysql.createConnection({
    host: 'student.iming.info',    // 连接的服务器
    user: 'root',    // 用户名
    password: '*******************',    // 用户密码
    database: 'ming'    // 选择的库
});

connection.connect();    // 创建一个mysql的线程

var addSql = 'INSERT INTO websites(id, name, url, alexa, country) VALUES(0, ?, ?, ?, ?)'; // 创建一个通用的sql,并预留出填补的空位
var addSqlParams = ['mySoul', 'https://www.iming.info', '0000000', 'CN'];

connection.query(addSql, addSqlParams, (err, result) => {
    if(err){
        console.log('[INSERT ERROR] -', err.message);
        return;
    }

    console.log('------------------INSERT--------------------------')
    console.log('INSERT ID', result);
    console.log('-------------------------------------------------\n\n');
});

登陆数据库查看

mysql> select * from websites;
+----+----------+---------------------------+-------+---------+
| id | name     | url                       | alexa | country |
+----+----------+---------------------------+-------+---------+
|  1 | Google   | https://www.google.cm/    |     1 | USA     |
|  2 | 淘宝     | https://www.taobao.com/   |    13 | CN      |
|  3 | 微博     | http://weibo.com/         |    20 | CN      |
|  5 | Facebook | https://www.facebook.com/ |     3 | USA     |
|  6 | mySoul   | https://www.iming.info    |     0 | CN      |
+----+----------+---------------------------+-------+---------+
5 rows in set (0.02 sec)

mysql>

很明显已经插入完成

亲,如果数据库ID设置了自动递增,即使用了AUTO_INCREMENT,建议使用自增,因为数据库索引是B+树的加快查询速度。所以一般都设置自增序列

关于JSON 因为数据通信是使用JSON的,所以两个方法,一个JSON转对象 JSON.parse
 对象转JSON JSON.stringify

在加上一个node的框架Express,即可完成和浏览器的交互,这样就完成一个web服务器的搭建

删除数据

var mysql = require('mysql');
var connection = mysql.createConnection({
    host: 'student.iming.info',    // 连接的服务器
    user: 'root',    // 用户名
    password: '****************',    // 用户密码
    database: 'ming'    // 选择的库
});

connection.connect();    // 创建一个mysql的线程

var delSql = 'DELETE FROM websites WHERE id=6';
connection.query(delSql, (err, result) => {
    if(err) {
        console.log('[DELETE ERROR] -', err.message);
        return;
    }

    console.log('------------DELETE------------------');
    console.log('DELETE affectedRows', result);
    console.log('------------------------------------');
})

connection.end();
PS C:\Users\mingm\Desktop\test> node test.js
------------DELETE------------------
DELETE affectedRows OkPacket {
  fieldCount: 0,
  affectedRows: 1,
  insertId: 0,
  serverStatus: 2,
  warningCount: 0,
  message: '',
  protocol41: true,
  changedRows: 0 }
------------------------------------
PS C:\Users\mingm\Desktop\test>

博客

www.iming.info

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
目录
相关文章
|
6月前
|
SQL Java 关系型数据库
Java连接MySQL数据库环境设置指南
请注意,在实际部署时应该避免将敏感信息(如用户名和密码)硬编码在源码文件里面;应该使用配置文件或者环境变量等更为安全可靠地方式管理这些信息。此外,在处理大量数据时考虑使用PreparedStatement而不是Statement可以提高性能并防止SQL注入攻击;同时也要注意正确处理异常情况,并且确保所有打开过得资源都被正确关闭释放掉以防止内存泄漏等问题发生。
254 13
|
6月前
|
SQL 关系型数据库 MySQL
MySQL数据库连接过多(Too many connections)错误处理策略
综上所述,“Too many connections”错误处理策略涉及从具体参数配置到代码层面再到系统与架构设计全方位考量与改进。每项措施都需根据具体环境进行定制化调整,并且在执行任何变更前建议先行测试评估可能带来影响。
1494 11
|
6月前
|
SQL 关系型数据库 MySQL
排除通过IP访问MySQL时出现的连接错误问题
以上步骤涵盖了大多数遇到远程连接 MySQL 数据库时出现故障情形下所需采取措施,在执行每个步骤后都应该重新尝试建立链接以验证是否已经解决问题,在多数情形下按照以上顺序执行将能够有效地排除并修复大多数基本链接相关故障。
451 3
|
6月前
|
SQL 监控 关系型数据库
查寻MySQL或SQL Server的连接数,并配置超时时间和最大连接量
以上步骤提供了直观、实用且易于理解且执行的指导方针来监管和优化数据库服务器配置。务必记得,在做任何重要变更前备份相关配置文件,并确保理解每个参数对系统性能可能产生影响后再做出调节。
620 11
|
7月前
|
存储 关系型数据库 MySQL
修复.net Framework4.x连接MYSQL时遇到utf8mb3字符集不支持错误方案。
通过上述步骤大多数情况下能够解决由于UTF-encoding相关错误所带来影响,在实施过程当中要注意备份重要信息以防止意外发生造成无法挽回损失,并且逐一排查确认具体原因以采取针对性措施解除障碍。
402 12
|
8月前
|
SQL XML Java
配置Spring框架以连接SQL Server数据库
最后,需要集成Spring配置到应用中,这通常在 `main`方法或者Spring Boot的应用配置类中通过加载XML配置或使用注解来实现。
615 0
|
6月前
|
缓存 关系型数据库 BI
使用MYSQL Report分析数据库性能(下)
使用MYSQL Report分析数据库性能
456 158
|
6月前
|
关系型数据库 MySQL 数据库
自建数据库如何迁移至RDS MySQL实例
数据库迁移是一项复杂且耗时的工程,需考虑数据安全、完整性及业务中断影响。使用阿里云数据传输服务DTS,可快速、平滑完成迁移任务,将应用停机时间降至分钟级。您还可通过全量备份自建数据库并恢复至RDS MySQL实例,实现间接迁移上云。