为了账号安全,请及时绑定邮箱和手机立即绑定

Node 连接mysql数据库

标签:
MySQL Node.js

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>



作者:小明明___
链接:https://www.jianshu.com/p/96d731dd74be


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消