Node 连接mysql数据库

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

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏小怪聊职场

MySQL(一)|性能分析方法、SQL性能优化和MySQL内部配置优化

812100
来自专栏我的博客

PHP Mysql函数汇总表

mysql_affected_rows — 取得前一次 MySQL 操作所影响的记录行数mysql_change_user —  改变活动连接中登录的用户mys...

40050
来自专栏张善友的专栏

SQL Injection的深入探讨

SQL injection可以说是一种漏洞,也可以说成是一种攻击方法,程序中的变量处理不当,对用户提交的数据过滤不足,都可能产生这个漏洞,而攻击原理就是利用用户...

20270
来自专栏java达人

PostgreSQL中的Schema

一个数据库包含一个或多个命名的模式,模式又包含表。模式还包含其它命名的对象,包括数据类型、函数,以及操作符。同一个对象名可以在不同的模式里使用而不会导致冲突;...

22590
来自专栏好好学java的技术栈

玩转springboot:整合mybatis实例

这篇文章讲解一下springboot整合mybatis,其实,springboot整合mybatis和springmvc整合mybatis并没有什么太大的区别,...

18030
来自专栏编程之路

羊皮书APP(Android版)开发系列(二十二)10分钟秒懂单例模式

10030
来自专栏大眼瞪小眼

面试-MySQL总结

2NF:每一个非主属性完全依赖于候选码(属性组的值能唯一的标识一个元组,但是其子集不可以)。

11530
来自专栏北京马哥教育

MySQL 超级入门教程(内含资源福利)

运维行业正在变革,推荐阅读:30万年薪Linux运维工程师成长魔法 MySQL简介 1、什么是数据库 ? 数据库(Database)是按照数据结构来组织、存储...

77580
来自专栏C/C++基础

ERROR 1062 (23000) at line 1: Duplicate entry '1332883220' for key 'group_key'

我有一个数据表,记录一个QQ号加好友的活跃天数、加好友次数、加好友的toUin数等信息。数据表的建表语句如下:

18540
来自专栏逸鹏说道

SQL Server 阻止了对组件“xp_cmdshell”的 过程“sys.xp_cmdshell”的访问。。。

今天在创建数据库的时候突然发现,xp_cmdshell的存储过程不能用了,网上一搜,发现大部分都是只关闭安全配置,然后就有了下文 ? 代码:具体的看注释,值得一...

32280

扫码关注云+社区

领取腾讯云代金券