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;
切记不要在数据库中直接手工修改密码。
输入命令的界面如下所示:
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