node操作mysql入门

发表于 node 分类,标签:

 

版本信息

作者时间主要变更内容链接
吴惟刚2022年04月21日node操作mysqlhttp://wuweigang.com/?id=372

node 操作 mysql 入门级

环境准备

  • mysql环境

    • 必须先安装 mysql

  • 在mysql上传建一个数据库,例 test

    • 可以通过navicat 或者mysql cmd面板创建

1
2
3
4
5
6
// 创建数据库
CREATE database test character set 'utf8';
// 显示当前mysql的所有数据库
SHOW databases;
// 使用刚创建的数据库
USE test;
  • 在 test数据库中创建表
    创建表的语法

    1
    CREATE TABLE table_name (column_name column_type);

创建一个test表,字段有id, username, age, schoolm address

1
create  table test4(id int ,username text , age tinyint, school text , address text , primary key(id) );

实例

安装依赖

  • 生成 package.json

    1
    npm init

以下是我的package.json

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
{
 "name": "nodeConnectMysql",
 "version": "1.0.0",
 "description": "wuwg  test node connect   mysql ",
 "main": "index.js",
 "scripts": {
   "test": "test"
 },
 "keywords": [
   "node",
   "mysql"
 ],
 "author": "wuwg",
 "license": "ISC",
 "dependencies": {
   "mysql": "^2.18.1"
 }
}
  • 安装 mysql包

    1
    cnpm  install  mysql

新建index.js

内容如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
// 引入 mysql
const mysql = require('mysql');
const dbConfig = {
   // 连接的服务器
   host: 'localhost',
   // 数据库用户名
   user: 'root',
   // MySQL密码
   password: '',
   //  要连接的数据库名
   database: 'test'
};

// 连接mysql函数
function connectMysql() {
   return new Promise((resolve, reject) => {
       // 连接数据库
       const connection = mysql.createConnection(dbConfig)
       // 连接成功测试
       connection.connect((err) => {
           if (err) {
               console.error('连接失败:')
               console.error(err)
               reject(connection);
           }
           console.log('连接成功 id:')
           // console.log(connection)
           // console.log(connection.threadId)
           resolve(connection);
       })
   })
}

// 停止链接数据库
function closeMysql(connection) {
   // 必须在查询语句后,要不然一调用这个方法,就直接停止链接,数据操作就会失败
   connection.end(function (err) {
       if (err) {
           console.log('关闭数据库连接失败!');
           throw err;
       }
   });
   // 销毁同上
   // connection.destroy();
}


// 插入
function insert() {
   // 连接数据库
   connectMysql().then((connection) => {
       const sql = 'INSERT INTO test(id, username, age, school, address) VALUES (?,?,?,?,?)';
       const data = ["1", "wuwg", 37, "xj", "xj"];
       connection.query(sql, data, (error, results) => {
           // 停止链接数据库
           closeMysql(connection);
           if (error) {
               console.log('插入失败')
               console.log(error)
               return;
           }
           console.log('插入成功')
           console.log(results)
       });
   })

}

// 插入
// insert();


function deleteData() {
   // 连接数据库
   connectMysql().then((connection) => {
       const sql = 'DELETE FROM test WHERE id = "4"';
       connection.query(sql, (error, results) => {
           // 停止链接数据库
           closeMysql(connection);
           if (error) {
               console.log('删除失败')
               console.log(error)
               return;
           }
           console.log('删除成功')
           console.log(results)
       })
   })
}

// 删除
// deleteData();

// 查询
function find() {
   // 连接数据库
   connectMysql().then((connection) => {
       // 定向查找
       const sql = 'SELECT  *  FROM test  WHERE username = "wuwg" '
       //  where 关键词用于指定查询条件,
       // =、>、<、>=、<、!= 以及一些扩展运算符
       // 年龄大于21
       // select * from test where age > 21;
       // is [not] null、in、like等
       // 模糊查询
       // select * from test where username like "%王%";
       // 还可以对查询条件使用 or 和 and 进行组合查询
       // select * from test where username = "wuwg" and age>20;
       connection.query(sql, (error, results, fileds) => {
           // 停止链接数据库
           closeMysql(connection);
           if (error) {
               console.log('查询失败')
               console.log(error)
               return;
           }
           console.log('查询成功')
           console.log('results')
           // 类数组
           console.log(results)
           console.log('fileds')
           // console.log(fileds)
       })
   })
}
// find()


function update() {
   // 连接数据库
   connectMysql().then((connection) => {

       // console.log('connection')
       // console.log(connection)
       // 注意这里是把 id=3的用户名修改成了 zhangsan
       const sql = 'UPDATE test  set username="zhangsan" WHERE id = "1"';
       connection.query(sql, (error, results) => {
           // 停止链接数据库
           closeMysql(connection);
           if (error) {
               console.log('更新失败')
               console.log(error)
               return;
           }
           console.log('更新成功')
           console.log(results)
       })
   })
}

// 更新
// update();

// 以下四个方法
insert();
// deleteData();
// find();
// update();

说明

index.js 暴露了四个方法,分别对应

  • insert 插入

  • deleteData 删除

  • find 查找

  • update 更新

    上述方法,可以任意放开一个, 然后cmd面板执行命令,查看输出日志同时去数据库中查看test表中的数据变化

1
node  index.js

注意: 如果表中无数据,可以自己先多插入几条数据,需要修改find中对应的数据项

1
const data = ["1", "wuwg", 37, "xj", "xj"];

0 篇评论

发表我的评论