查看“Node.js:MySQL”的源代码
←
Node.js:MySQL
跳到导航
跳到搜索
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
[[category:Node.js教程]] == 关于 == Node.js 连接 MySQL,并对数据库进行操作。 使用到的 Websites 表 SQL 文件 websites.sql: <syntaxhighlight lang="MySQL" highlight=""> /* Navicat MySQL Data Transfer Source Server : 127.0.0.1 Source Server Version : 50621 Source Host : localhost Source Database : RUNOOB Target Server Version : 50621 File Encoding : utf-8 Date: 05/18/2016 11:44:07 AM */ SET NAMES utf8; SET FOREIGN_KEY_CHECKS = 0; -- ---------------------------- -- Table structure for `websites` -- ---------------------------- DROP TABLE IF EXISTS `websites`; CREATE TABLE `websites` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` char(20) NOT NULL DEFAULT '' COMMENT '站点名称', `url` varchar(255) NOT NULL DEFAULT '', `alexa` int(11) NOT NULL DEFAULT '0' COMMENT 'Alexa 排名', `country` char(10) NOT NULL DEFAULT '' COMMENT '国家', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8; -- ---------------------------- -- Records of `websites` -- ---------------------------- BEGIN; INSERT INTO `websites` VALUES ('1', 'Google', 'https://www.google.cm/', '1', 'USA'), ('2', '淘宝', 'https://www.taobao.com/', '13', 'CN'), ('3', '菜鸟教程', 'http://www.runoob.com/', '4689', 'CN'), ('4', '微博', 'http://weibo.com/', '20', 'CN'), ('5', 'Facebook', 'https://www.facebook.com/', '3', 'USA'); COMMIT; SET FOREIGN_KEY_CHECKS = 1; </syntaxhighlight> == 安装驱动 == 使用了 cnpm 命令(淘宝定制的命令)进行安装: <syntaxhighlight lang="bash" highlight=""> $ cnpm install mysql </syntaxhighlight> == 连接数据库 == 示例,“test.js”: <syntaxhighlight lang="JavaScript" highlight=""> var mysql = require('mysql'); var connection = mysql.createConnection({ host : 'localhost', user : 'root', password : '123456', database : 'test' }); connection.connect(); connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) { if (error) throw error; console.log('The solution is: ', results[0].solution); }); </syntaxhighlight> 执行以下命令输出结果为: <syntaxhighlight lang="bash" highlight=""> $ node test.js The solution is: 2 </syntaxhighlight> === 连接参数 === {| class="wikitable" ! 参数 !! 描述 |- | host || 主机地址 (默认:localhost) |- | user || 用户名 |- | password || 密码 |- | port || 端口号 (默认:3306) |- | database || 数据库名 |- | charset || 连接字符集(默认:'UTF8_GENERAL_CI',注意字符集的字母都要大写) |- | localAddress || 此 IP 用于 TCP 连接(可选) |- | socketPath || 连接到 unix 域路径,当使用 host 和 port 时会被忽略 |- | timezone || 时区(默认:'local') |- | connectTimeout || 连接超时(默认:不限制;单位:毫秒) |- | stringifyObjects || 是否序列化对象 |- | typeCast || 是否将列值转化为本地 JavaScript 类型值 (默认:true) |- | queryFormat || 自定义 query 语句格式化方法 |- | supportBigNumbers || 数据库支持 bigint 或 decimal 类型列时,需要设此 option 为 true (默认:false) |- | bigNumberStrings || supportBigNumbers 和 bigNumberStrings 启用:强制 bigint 或 decimal 列以 JavaScript 字符串类型返回(默认:false) |- | dateStrings || 强制 timestamp、datetime、data 类型以字符串类型返回,而不是 JavaScript Date 类型(默认:false) |- | debug || 开启调试(默认:false) |- | multipleStatements || 是否许一个 query 中有多个 MySQL 语句 (默认:false) |- | flags || 用于修改连接标志 |- | ssl || 使用 ssl 参数(与crypto.createCredenitals参数格式一至)或一个包含 ssl 配置文件名称的字符串,目前只捆绑 Amazon RDS 的配置文件 |} * 更多说明可参见:[https://github.com/mysqljs/mysql https://github.com/mysqljs/mysql] == 数据库操作( CURD ) == === 查询数据 === 示例: <syntaxhighlight lang="JavaScript" highlight=""> var mysql = require('mysql'); var connection = mysql.createConnection({ host: 'localhost', user: 'root', password: '123456', port: '3306', database: 'test' }); connection.connect(); var sql = 'SELECT * FROM websites'; // 查 connection.query(sql, function (err, result) { if(err){ console.log('[SELECT ERROR] - ',err.message); return; } console.log('--------------------------SELECT----------------------------'); console.log(result); console.log('------------------------------------------------------------\n\n'); }); connection.end(); </syntaxhighlight> 执行结果: <syntaxhighlight lang="bash" highlight=""> $ 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://www.runoob.com/', alexa: 4689, country: 'CN' }, RowDataPacket { id: 4, name: '微博', url: 'http://weibo.com/', alexa: 20, country: 'CN' }, RowDataPacket { id: 5, name: 'Facebook', url: 'https://www.facebook.com/', alexa: 3, country: 'USA' } ] ------------------------------------------------------------ </syntaxhighlight> === 插入数据 === 示例: <syntaxhighlight lang="JavaScript" highlight=""> var mysql = require('mysql'); var connection = mysql.createConnection({ host: 'localhost', user: 'root', password: '123456', port: '3306', database: 'test' }); connection.connect(); var addSql = 'INSERT INTO websites(Id,name,url,alexa,country) VALUES(0,?,?,?,?)'; var addSqlParams = ['菜鸟工具', 'https://c.runoob.com', '23453', 'CN']; // 增 connection.query(addSql, addSqlParams, function (err, result) { if(err){ console.log('[INSERT ERROR] - ',err.message); return; } console.log('--------------------------INSERT----------------------------'); //console.log('INSERT ID:',result.insertId); console.log('INSERT ID:',result); console.log('-----------------------------------------------------------------\n\n'); }); connection.end(); </syntaxhighlight> 执行结果: <syntaxhighlight lang="bash" highlight=""> $ node test.js --------------------------INSERT---------------------------- INSERT ID: OkPacket { fieldCount: 0, affectedRows: 1, insertId: 6, serverStatus: 2, warningCount: 0, message: '', protocol41: true, changedRows: 0 } ----------------------------------------------------------------- </syntaxhighlight> === 更新数据 === 示例: <syntaxhighlight lang="JavaScript" highlight=""> var mysql = require('mysql'); var connection = mysql.createConnection({ host: 'localhost', user: 'root', password: '123456', port: '3306', database: 'test' }); connection.connect(); var modSql = 'UPDATE websites SET name = ?,url = ? WHERE Id = ?'; var modSqlParams = ['菜鸟移动站', 'https://m.runoob.com',6]; // 改 connection.query(modSql, modSqlParams, function (err, result) { if(err){ console.log('[UPDATE ERROR] - ',err.message); return; } console.log('--------------------------UPDATE----------------------------'); console.log('UPDATE affectedRows',result.affectedRows); console.log('-----------------------------------------------------------------\n\n'); }); connection.end(); </syntaxhighlight> 执行结果: <syntaxhighlight lang="bash" highlight=""> --------------------------UPDATE---------------------------- UPDATE affectedRows 1 ----------------------------------------------------------------- </syntaxhighlight> === 删除数据 === 示例:删除 id 为 6 的数据 <syntaxhighlight lang="JavaScript" highlight=""> var mysql = require('mysql'); var connection = mysql.createConnection({ host: 'localhost', user: 'root', password: '123456', port: '3306', database: 'test' }); connection.connect(); var delSql = 'DELETE FROM websites where id=6'; //删 connection.query(delSql, function (err, result) { if(err){ console.log('[DELETE ERROR] - ',err.message); return; } console.log('--------------------------DELETE----------------------------'); console.log('DELETE affectedRows',result.affectedRows); console.log('-----------------------------------------------------------------\n\n'); }); connection.end(); </syntaxhighlight> 执行结果: <syntaxhighlight lang="bash" highlight=""> --------------------------DELETE---------------------------- DELETE affectedRows 1 ----------------------------------------------------------------- </syntaxhighlight>
返回至“
Node.js:MySQL
”。
导航菜单
个人工具
登录
命名空间
页面
讨论
大陆简体
已展开
已折叠
查看
阅读
查看源代码
查看历史
更多
已展开
已折叠
搜索
导航
首页
最近更改
随机页面
MediaWiki帮助
笔记
服务器
数据库
后端
前端
工具
《To do list》
日常
阅读
电影
摄影
其他
Software
Windows
WIKIOE
所有分类
所有页面
侧边栏
站点日志
工具
链入页面
相关更改
特殊页面
页面信息