非原创

本文转自https://github.com/a415432669/-front_end_notebook/tree/master/Node/day6/%E6%96%87%E6%A1%A3

介绍如何使用 Node.js 来连接 MySQL,并对数据库进行操作。

安装驱动

本教程使用了[淘宝定制的 cnpm 命令](https://www.runoob.com/nodejs/nodejs-npm.html#taobaonpm)进行安装:

```
$ cnpm install mysql
```

连接数据库

在以下实例中根据你的实际配置修改数据库用户名、及密码及数据库名:

test.js 文件代码:

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);
});

执行以下命令输出结果为:

$ node test.js
The solution is: 2

数据库操作( CURD )

在进行数据库操作前,你需要将本站提供的 Websites 表 SQL 文件[websites.sql](https://static.runoob.com/download/websites.sql) 导入到你的 MySQL 数据库中。

本教程测试的 MySQL 用户名为 root,密码为 123456,数据库为 test,你需要根据自己配置情况修改。

查询数据

将上面我们提供的 SQL 文件导入数据库后,执行以下代码即可查询出数据:

查询数据

```javascript
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('------------------');  
});
 
connection.end();
```

执行以下命令输出就结果为:

```
$ 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' }
]
------------------------------------------------------------
```

插入数据

我们可以向数据表 websties 插入数据:

插入数据

```javascript
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.sxb.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();
```

执行以下命令输出就结果为:

```
$ node test.js
--------------------------INSERT----------------------------
INSERT ID: OkPacket {
  fieldCount: 0,
  affectedRows: 1,
  insertId: 6,
  serverStatus: 2,
  warningCount: 0,
  message: '',
  protocol41: true,
  changedRows: 0 }
-----------------------------------------------------------------
```

执行成功后,查看数据表,即可以看到添加的数据

更新数据

我们也可以对数据库的数据进行修改:

更新数据

```javascript
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.sxt.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();
```

执行以下命令输出就结果为:

```
--------------------------UPDATE----------------------------
UPDATE affectedRows 1
-----------------------------------------------------------------
```

执行成功后,查看数据表

删除数据

我们可以使用以下代码来删除 id 为 6 的数据:

删除数据

```javascript
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();
```

执行以下命令输出就结果为:

```
--------------------------DELETE----------------------------
DELETE affectedRows 1
-----------------------------------------------------------------
```

执行成功后,查看数据表

数据库代码

let mysql = require('mysql');let options = {host: "localhost",// port: "3306", 可选,默认是3306user: "root",password: "123456789",// database: "shop" 删除shop后注释database: "mall"
};// 创建与数据库的连接对象
let con = mysql.createConnection(options);// 建立连接
con.connect((err) => {// 如果建立连接失败if (err) {console.log(err);} else {console.log('连接成功');}
});//  执行数据库语句
// 执行查询语句
// let strSql = "select * from user";
// con.query(strSql, (err, results, fields) => {
//     console.log(err);
//     console.log(results);
//     console.log(fields);
// });// 删除表
// let strSql2 = "drop table user";
// con.query(strSql2, (err, results) => {
//     console.log(err);
//     console.log(results);
// });// 删除库
// let strSql3 = "drop database shop";
// con.query(strSql3, (err, results) => {
//     console.log(err);
//     console.log(results);
// });// 创建库
// let strSql4 = "create database mall";
// con.query(strSql4, (err, results) => {
//     console.log(err);
//     console.log(results);
// });// 创建表
// let strSql5 = 'CREATE TABLE `user`  (`id` int(0) NOT NULL AUTO_INCREMENT,`username` varchar(255),`password` varchar(255),`mail` varchar(255),PRIMARY KEY (`id`));';
// con.query(strSql5, (err, results) => {
//     console.log(err);
//     console.log(results);
// });// 插入数据
// 不写入id的情况下,数据库会自动添加
// let strSql6 = "insert into user (id,username,password,mail) values (2,'fish','1111','1343416@qq.com')";
// con.query(strSql6, (err, results) => {
//     console.log(err);
//     console.log(results);
// });
// ?是占位符
let strSql7 = "insert into user (username,password,mail) values (?,?,?)";
con.query(strSql7, ["rain", "password", "15348@qq.com"], (err, results) => {console.log(err);console.log(results);
});

爬虫sobook的代码

let mysql = require('mysql');
let axios = require('axios');
let cheerio = require('cheerio');let page = 1;
let count = 1;let options = {host: "localhost",// port: "3306", 可选,默认是3306user: "root",password: "123456789",// database: "shop" 删除shop后注释database: "sobook"
};// 创建与数据库的连接对象
let con = mysql.createConnection(options);// 建立连接
con.connect((err) => {// 如果建立连接失败if (err) {console.log(err);} else {console.log('连接成功');}
});// 获取第N个页面所有书籍的链接async function getPageUrl(num) {let httpUrl = "https://sobooks.cc/page/" + num;let res = await axios.get(httpUrl);// console.log(res.data);let $ = cheerio.load(res.data);$("#cardslist .card-item .thumb-img>a").each((i, element) => {let href = $(element).attr("href");// console.log(href);getBookInfo(href);})
}async function getBookInfo(href) {let res = await axios.get(href);let $ = cheerio.load(res.data);// 书籍图片let bookimg = $('.article-content .bookpic img').attr('src');// 书籍名称let bookname = $('.article-content .bookinfo li:nth-child(1)').text();bookname = bookname.substring(3, bookname.length);// 书籍作者let author = $('.article-content .bookinfo li:nth-child(2)').text();author = author.substring(3, author.length);//标签let tag = $('.article-content .bookinfo li:nth-child(4)').text();tag = tag.substring(3, tag.length);// 时间let pubtime = $('.article-content .bookinfo li:nth-child(5)').text();pubtime = pubtime.substring(3, pubtime.length);let score = $('.article-content .bookinfo li:nth-child(6) b').attr("class");score = score[score.length - 1];let cataory = $('#mute-category > a').text().trim();// let abrief = $('body > section > div.content-wrap > div > article > p:nth-child(9)').text();let brief = $(".article-content").html();let bookUrl = href;// let download = $('#mute-category > a').text().attr('href').split("?url")[1];let download = href;let arr = [bookname, author, tag, pubtime, score, bookimg, cataory, brief, bookUrl, download];// console.log(arr);// 插入数据库let sqlStr = "insert into book (bookname, author, tag, pubtime, score, bookimg, cataory, brief, bookUrl, download) values (?,?,?,?,?,?,?,?,?,?)";con.query(sqlStr, arr, (err, results) => {console.log(err);console.log(results);})
}// getPageUrl(page);
let tempBook = "https://sobooks.cc/books/17562.html";
getBookInfo(tempBook);

node连接数据库_数据库2相关推荐

  1. Node.js系列-----数据库MySQL

    一.数据库MySQL 1.1. 为什么要使用数据库 任何的软件系统都需要存放大量的数据,这些数据通常是非常复杂和庞大的: 比如用户信息包括姓名.年龄.性别.地址.身份证号.出生日期等等: 比如商品信息 ...

  2. pycharm连接mysql1193错误_pycharm连接mysql数据库提示错误的解决方法_数据库

    忘记phpmyadmin密码怎么重置_数据库 重置phpmyadmin密码的方法是:1.停止mysql服务:2.跳过验证启动mysql:3.重新设置密码:4.更新权限:5.重新启动mysql,如[ki ...

  3. Node连接MySQL数据库进行基本的增删改查操作(一看就会)

    Node连接MySQL数据库进行基本的增删改查操作(一看就会) ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ❤️ ...

  4. node.js 链接 数据库

    node.js 链接 数据库 1.前提 电脑已安装node,可以通过win+R 键,输入cmd,然后输入,node -v,检查版本: . 再输入npm -V,检查npm的安装版本 以上都有之后,建立一 ...

  5. node连接数据库;webpack;token令牌的实现;CommonJs规范;websocket

    node连接数据库 安装mysql 插件:npm i mysql //1.引入 const mysql =require("mysql"); //2.创建连接对象 //使用crea ...

  6. Node.js SQL数据库操作 (上)(操作MySQL数据库及 数据库连接池)

    文章目录 Node.js MySQL驱动 操作 MySQL 数据库 连接 MySQL 数据库 增删改查操作 防止 SQL 注入攻击 数据库连接池操作 Node.js MySQL驱动 Node.js的原 ...

  7. 第01章_数据库概述

    第01章_数据库概述 1. 为什么要使用数据库 持久化(persistence):把数据保存到可掉电式存储设备中以供之后使用.大多数情况下,特别是企业级应用,数据持久化意味着将内存中的数据保存到硬盘上 ...

  8. oracle字段怎么写,oracle修改字段名的语句怎么写_数据库,oracle,字段名

    Oracle 如何查看所有表?_数据库 Oracle查看所有表的方法:首先打开DOS窗口,并输入"SQLPLUS":然后使用SYS用户以DBA身份登录Oracle数据库:最后执行S ...

  9. oracle 连接组件,[2021] node连接oracle数据库示例[使用oracle官方组件]

    [2021] node连接oracle数据库示例[使用oracle官方组件] node 连接 oracle 示例 本示例采用的 oracledb 和 instantclient-basic-windo ...

  10. NODE.JS DM数据库驱动简介及搭建

    一.Node.js DM 数据库驱动版本介绍 分为新版本和老版本.其中老版本驱动包在达梦安装路径下的dmdbms\drivers\node.js文件夹中,包含以下三个版本: 那么如何选择合适的版本,可 ...

最新文章

  1. Gartner 「RPA市场竞争格局」:中国厂商首次进入国际视野
  2. 多线程:一些好的编程建议
  3. 如何将图片序列化_如何将图片文字转化为Word文档?
  4. matplotlib的基本使用1
  5. kubernetes实战篇之helm示例yaml文件文件详细介绍
  6. 马斯克终于承认售出比特币:卖了10%
  7. (二十六)java版spring cloud+spring boot 社交电子商务平台-Eureka介绍
  8. 密码学原理与实践第三版pdf_喜报!Nervos 研究员 Alan 论文被国际密码学顶会欧密会收录...
  9. JProfiler 9.1.1部署及使用
  10. javaScript中简单数据类型和复杂数据类型赋值拷贝的理解
  11. 写了一个很矬( cuó)的移动端用户管理
  12. 深圳地图echarts
  13. android webview 魅族,魅族 Flyme 系统出现大面积应用闪退问题,提供临时解决方法...
  14. 机器学习处理信号分离_【火炉炼AI】机器学习054-用ICA做盲源分离
  15. 解决PyQt5程序报错Process finished with exit code -1073740791 (0xC0000409)
  16. 七段数码管显示原理研究
  17. 学术界AV1编码优化技术的进展
  18. 快递100企业版接口(API)云打印、电子面单实现Java版
  19. 多线程,io,网编,反射,xml
  20. Aspect获取目标方法中带特定注解的参数值

热门文章

  1. 阿里云部署网站全流程(基于nodejs)
  2. 论文引用文献并插入编号
  3. 计算机键盘没有fn,键盘上没有fn键怎么办
  4. 关于华为手机无线调试
  5. V4L2视频采集的基本流程
  6. 压敏电阻 matlab,输入整流滤波器及钳位保护电路的设计
  7. 学硕计算机可考大数据博士吗,专硕考博比学硕考博难度更大吗?听听上岸的人怎么说...
  8. 悬停提示工具:Tippy.js
  9. 跨国公司怎样面试应聘者
  10. mysql创建唯一非聚集索引_创建聚集索引、非聚集索引、唯一索引、唯一键约束...