Node.js 简单数据库操作(mysql)

1、先完成MySql的安装、配置:

下载 XAMPP,安装并运行,注意:安装路径不能有空格和中文

运行 xampp-control

在打开的界面中点击 MySQL 右侧的Start, 注意:我们只用MySQL,其他程序不要运行

点击后可以看到MySQL背景变绿色,端口是3306

打开 Navicat 左上角>> 连接 >> MySQL

默认空密码,登录成功后,双击左侧  test  数据库,点击右上角Query,下方出现 New Query

输入创建表的sql语句并点击 Run 或 用快捷键 Ctrl+r:

1create table think_user (
2  id int NOT NULL auto_increment,
3  username varchar(100),
4  pwd varchar(100),
5  PRIMARY KEY (`id`)
6)

由于密码为空,从外部连接需要修改默认密码:

双击左侧mysql数据库,点击第二行图标栏的:Query  ,再点击右下方: new Query,执行以下sql语句,输入完成后点击 Run运行语句

1)、为MySQL的 root账户设置密码(默认是空密码)

1update user set password=password('123456') where User='root'

其中123456为你希望修改的密码
2)、进行授权操作:

1GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;

3)、重载授权表:

1FLUSH PRIVILEGES;

切记不要在数据库中直接手工修改密码。

输入命令的界面如下所示:

5

2. 命令行进入d:\Documents\Nodejs\exTest,执行命令:

1npm install mysql

3. 编辑 主程序文件 index.js

第一部分:引入mysql模块和添加数据库连接字符串

 1var express = require('express'); 
 2var bodyParser = require('body-parser');
 3var app = express();
 4const mysql = require('mysql');
 5const conn = mysql.createConnection({
 6    host:'localhost',
 7    user:'root',
 8    password:'mysqlpwd',
 9    database:'test'
10});
11
12//添加get,返回 所有数据
13app.get('/getall', (req,res) => {    
14    const sqlStr = 'select * from think_user'
15    conn.query(sqlStr,(err,results) => {
16         console.log(results)
17         if(err)  return res.json({err_code:1,message:'获取失败',affectedRows:0})
18         res.json({
19            err_code:0,message:results,affectedRows:results.length
20        });
21    });
22});
23
24//添加get,返回指定数据
25app.get('/get',(req,res) => {
26const sqlStr = 'select * from think_user where id = ?' ;
27    conn.query(sqlStr, req.query.id, (err,results) => {
28        if(err) return res.json({err_code:1,message:'获取失败',affectedRows:0})
29        if(results.length !== 1) 
30		return res.json({err_code:1,message:'数据不存在',affectedRows:0})
31        res.json({
32            err_code:0, message:results[0], affectedRows:results.length
33        }); 
34    });
35});
36
37//添加post,添加、删除数据
38var urlencodedParser = bodyParser.urlencoded({ extended: false });
39app.post('/post/insert_del', urlencodedParser, (req,res) => {
40   const data = req.body;
41   const sqlStr = 'insert into think_user set ?'; //添加数据
42   //const sqlStr = 'delete from think_user where ?'; /删除数据
43   conn.query(sqlStr,data,(err,results) => {
44         if(err)  return res.json({err_code:1,message:err.message, affectedRows:0});
45         if(results.affectedRows !== 1) 
46            return res.json({err_code:1,message:'操作失败', affectedRows:0});
47        res.json({err_code:0,message:'操作成功', affectedRows:results.affectedRows})
48   }); 
49});
50
51//添加post,更新数据,第三部分与上节一致
52var urlencodedParser = bodyParser.urlencoded({ extended: false })
53app.post('/post/update', urlencodedParser, (req,res) => {
54   const data = req.body
55   const sqlStr = 'update think_user set ? where id = ?'
56   conn.query(sqlStr,[req.body, req.body.id], (err,results) => {
57         if(err) return res.json({err_code:1,message:err.message, affectedRows:0})
58         if(results.affectedRows !== 1) 
59            return res.json({err_code:1,message:'操作失败', affectedRows:0})
60        res.json({err_code:0,message:'操作成功', affectedRows:results.affectedRows})
61 }); 
62});
63
64//web服务设置代码. 服务的端口为 8080
65var server = app.listen(8080, function(){
66	var host = server.address().address;
67       var port = server.address().port;
68       console.log("address: %s, port: %d", host, port);
69});

4. API 访问测试:

获取全部数据 http://127.0.0.1:8080/getall
获取部分数据 http://127.0.0.1:8080/get
添加、删除数据 http://127.0.0.1:8080/post/insert_del
更新数据 http://127.0.0.1:8080/post/update