源码地址

  https://github.com/king-y/NodeJs/tree/master/user

目录结构

  

mysql.js

var mysql = require('mysql');

var pool = mysql.createPool({
host : '127.0.0.1',
user : 'root',
password : '',
database : 's79'
}); exports.query = function(sql,data){
pool.getConnection(function(err,connection){
connection.query(sql,function(err,result){
data(err,result);
connection.release();
});
});
}

app.js

var express = require('express');
var bodyParser = require('body-parser');
var fs = require('fs');
var sql = require('./conf/mysql.js');
var app = express(); app.set('view engine','ejs');
app.set('views','./views/'); app.use(bodyParser.urlencoded({ extended: false })); // display user
app.get('/',function(req,res){
sql.query('select * from user',function(err,result){
if (err) {
res.render('index',{title:"用户列表",datas:[]});
}else{
res.render('index',{title:"用户列表",datas:result});
}
});
}); // add user
app.get('/add',function(req,res){
res.render('add');
}); app.post('/add',function(req,res){
var name = req.body.name;
var age = req.body.age;
sql.query('insert into user(name,age) values("'+name+'","'+ age +'")',function(err,result){
if(err){
res.send('新增失败'+err);
}else {
res.redirect('/');
}
});
}); // edit user
app.get('/edit/:id',function(req,res){
var id = req.params.id;
sql.query('select * from user where id = ' + id,function(err,result){
res.render('edit',{datas:result});
});
}); app.post('/edit',function(req,res){
var id = req.body.id;
var name = req.body.name;
var age = req.body.age;
sql.query('update user set name = "'+name+'" , age = "'+age+'" where id = '+id,function(err,result){
if (err) {
res.send('更新失败'+err);
}else{
res.redirect('/');
}
}) }); // del user
app.get('/del/:id',function(req,res){
var id = req.params.id;
sql.query('delete from user where id = '+id,function(err,result){
if(err){
res.send('删除失败'+err);
}else {
res.redirect('/');
}
});
}); app.listen(3000);

index.ejs

<!DOCTYPE html>
<html lang="en"> <head>
<meta charset="UTF-8">
<title>
<%= title %>
</title>
<style>
table.TB_COLLAPSE {
width: 100%;
border-collapse: collapse;
} table.TB_COLLAPSE caption {
padding: 10px;
font-size: 24px;
background-color: #f3f6f9;
} table.TB_COLLAPSE thead th {
padding: 5px 0px;
color: #fff;
background-color: #915957;
} table.TB_COLLAPSE tbody td {
padding: 5px 0px;
color: #555;
text-align: center;
background-color: #fff;
border-bottom: 1px solid #915957;
} table.TB_COLLAPSE tfoot td {
padding: 5px 0px;
text-align: center;
background-color: #d6d6a5;
}
a {
color: #555;
text-decoration: none;
}
a:hover{
color:#cae;
}
</style>
</head> <body>
<table class="TB_COLLAPSE">
<tr>
<th>编号</th>
<th>姓名</th>
<th>年龄</th>
<th>操作</th>
</tr>
<% for(var i = 0; i < datas.length; i++) {%>
<tr>
<td>
<%= datas[i].id %>
</td>
<td>
<%= datas[i].name %>
</td>
<td>
<%= datas[i].age %>
</td>
<td><a href="/add">添加用户</a>|<a href="/del/<%= datas[i].id %>">删除</a>|<a href="/edit/<%= datas[i].id %>">编辑</a></td>
</tr>
<% } %>
</table>
</body> </html>

add.ejs

<!DOCTYPE html>
<html lang="en"> <head>
<meta charset="UTF-8">
<title>添加用户</title>
<style>
.myButton {
-moz-box-shadow: 0px 0px 0px 0px #a4e271;
-webkit-box-shadow: 0px 0px 0px 0px #a4e271;
box-shadow: 0px 0px 0px 0px #a4e271;
background-color:#89c403;
-moz-border-radius:28px;
-webkit-border-radius:28px;
border-radius:28px;
border:1px solid #74b807;
display:inline-block;
cursor:pointer;
color:#ffffff;
font-family:Arial;
font-size:17px;
padding: 3px 71px;
margin-top: 10px;
text-decoration:none;
text-shadow:0px 1px 0px #528009;
}
.myButton:hover {
background-color:#77a809;
}
.myButton:active {
position:relative;
top:1px;
}
input{
border: 1px solid #cae;
color:#cea;
}
hr{
border:1px solid #cea;
}
</style>
</head> <body>
<form class="form-horizontal" action="/add" method="post">
<fieldset>
<div id="legend" class="">
<legend class="leipiplugins-orgvalue">添加用户</legend>
<hr>
</div>
<div class="control-group">
<!-- Text -->
<div class="controls">
<input name="name" type="text" placeholder="请输入您的姓名" title="姓名" value="" class="leipiplugins" leipiplugins="text">
</div>
</div>
<br>
<div class="control-group">
<!-- Text -->
<div class="controls">
<input name="age" type="text" placeholder="请输入您的年龄" title="年龄" value="" class="leipiplugins" leipiplugins="text">
</div>
</div>
<input class="myButton" type="submit" value="提交">
</fieldset>
</form>
</body> </html>

edit.ejs

<!DOCTYPE html>
<html lang="en"> <head>
<meta charset="UTF-8">
<title>编辑用户</title>
<style>
.myButton {
-moz-box-shadow: 0px 0px 0px 0px #a4e271;
-webkit-box-shadow: 0px 0px 0px 0px #a4e271;
box-shadow: 0px 0px 0px 0px #a4e271;
background-color:#89c403;
-moz-border-radius:28px;
-webkit-border-radius:28px;
border-radius:28px;
border:1px solid #74b807;
display:inline-block;
cursor:pointer;
color:#ffffff;
font-family:Arial;
font-size:17px;
padding: 3px 71px;
margin-top: 10px;
text-decoration:none;
text-shadow:0px 1px 0px #528009;
}
.myButton:hover {
background-color:#77a809;
}
.myButton:active {
position:relative;
top:1px;
}
input{
border: 1px solid #cae;
color:#cea;
}
hr{
border:1px solid #cea;
}
</style>
</head> <body>
<form class="form-horizontal" action="/edit" method="post">
<fieldset>
<div id="legend" class="">
<legend class="leipiplugins-orgvalue">编辑用户</legend>
<hr>
</div>
<div class="control-group">
<!-- Text -->
<div class="controls">
<input type="hidden" name="id" value="<%= datas[0].id %>">
<input name="name" type="text" value=" <%= datas[0].name %> " class="leipiplugins" leipiplugins="text">
</div>
</div>
<br>
<div class="control-group">
<!-- Text -->
<div class="controls">
<input name="age" type="text" value=" <%= datas[0].age %> " class="leipiplugins" leipiplugins="text">
</div>
</div>
<input class="myButton" type="submit" value="提交">
</fieldset>
</form>
</body> </html>

推荐两个工具网站,在线生成表单和按钮.

  表单:http://formbuild.leipi.org/?

  按钮:https://www.bestcssbuttongenerator.com/#/0

    http://www.shejidaren.com/css-button-generator-and-beautifucl-style-sheet.html

  

Nodejs+Express+Mysql实现简单用户管理增删改查的更多相关文章

  1. nodejs+express+mysql实现restful风格的增删改查示例

    首先,放上项目github地址:https://github.com/codethereforam/express-mysql-demo 一.前言 之前学的java,一直用的ssm框架写后台.前段时间 ...

  2. 进入全屏 nodejs+express+mysql实现restful风格的增删改查示例

    首先,放上项目github地址:https://github.com/codethereforam/express-mysql-demo 一.前言 之前学的java,一直用的ssm框架写后台.前段时间 ...

  3. node+express+mysql实现简单的数据增删改查

    前提 电脑已经安装了node,express,mysql. 实现步骤 1.新建数据库表 附数据表结构: 2.创建exprss项目 express -e myapp  新建一个以ejs为模板的expre ...

  4. springboot+layui实现PC端用户的增删改查 & 整合mui实现app端的自动登录和用户的上拉加载 & HBuilder打包app并在手机端下载安装

    springboot整合web开发的各个组件在前面已经有详细的介绍,下面是用springboot整合layui实现了基本的增删改查. 同时在学习mui开发app,也就用mui实现了一个简单的自动登录和 ...

  5. 大数据之路week05--day01(JDBC 初识之实现一个系统 实现用户选择增删改查 未优化版本)

    要求,实现用户选择增删改查. 给出mysql文件,朋友们可以自己运行导入到自己的数据库中: /* Navicat MySQL Data Transfer Source Server : mysql S ...

  6. 最简单的mybatis增删改查样例

    最简单的mybatis增删改查样例 Book.java package com.bookstore.app; import java.io.Serializable; public class Boo ...

  7. salesforce 零基础开发入门学习(六)简单的数据增删改查页面的构建

    VisualForce封装了很多的标签用来进行页面设计,本篇主要讲述简单的页面增删改查.使用的内容和设计到前台页面使用的标签相对简单,如果需要深入了解VF相关知识以及标签, 可以通过以下链接查看或下载 ...

  8. 【Mybatis】简单的mybatis增删改查模板

    简单的mybatis增删改查模板: <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE map ...

  9. MySQL数据库之表的增删改查

    目录 MySQL数据库之表的增删改查 1 引言 2 创建表 3 删除表 4 修改表 5 查看表 6 复制表 MySQL数据库之表的增删改查 1 引言 1.MySQL数据库中,数据库database就是 ...

随机推荐

  1. 学习CSS布局 - 没有布局

    如果你只想把所有内容都塞进一栏里,那么不用设置任何布局也是OK的. 然而,如果用户把浏览器窗口调整的很大,这时阅读网页会非常难受: 读完每一行之后,你的视觉焦点要从右到左移动一大段距离. 试着调整下浏 ...

  2. Luogu4040 AHOI/JSOI2014 宅男计划 贪心、二分、三分

    传送门 仍然对"为什么这个函数单峰"的问题毫无理解 首先,对于保质期又低.价格又贵的食物,我们显然不需要购买它.所以如果设\(pri_i\)表示保质期不小于\(i\)的所有食品中价 ...

  3. SpringMVC之单/多文件上传

    1.准备jar包(图标所指必备包,其他按情况导入) 2.项目结构 3.SingleController.java(控制器代码单文件和多文件) package com.wt.uplaod; import ...

  4. .net core 中使用httpclient,HttpClientFactory的问题

    Microsoft 在.Net Framework 4.5中引入了HttpClient,并且是在.NET服务器端代码中使用Web API的最常用方法.但它有一些严重的问题,如释放HttpClient对 ...

  5. 基于BlogEngine.NET搭建个人博客

    早些时候在万网以我自己的英文名买了个域名 giantliu.com又看到万网有一个免费版本的虚拟主机,而且还支持.net4.5这年头支持.net4.5的免费主机不多,本来想用阿里云/windows a ...

  6. tomcat多实例方案启动脚本

    批量启动 #!/bin/sh BASE_PATH="/usr/local/tomcat8/tomcat-ins/"bash $BASE_PATH/web1/tomcat.sh st ...

  7. centos7下/etc/rc.local文件里配置的开机启动项不执行的解决办法

    习惯于在/etc/rc.local文件里配置我们需要开机启动的服务,这个在centos6系统下是正常生效的.但是到了centos7系统下,发现/etc/rc.local文件里的开机启动项不执行了!仔细 ...

  8. Centos7.5部署MySQL5.7基于GTID主从复制+并行复制+半同步复制+读写分离(ProxySQL) 环境- 运维笔记 (完整版)

    之前已经详细介绍了Mysql基于GTID主从复制的概念,原理和配置,下面整体记录下MySQL5.7基于GTID主从复制+并行复制+增强半同步复制+读写分离环境的实现过程,以便加深对mysql新特性GT ...

  9. 牛客多校第三场-A-PACM Team-多维背包的01变种

    题目我就不贴了...说不定被查到要GG... 题意就是我们需要在P,A,C,M四个属性的限制下,找到符合条件的最优解... 这样我们就需要按照0/1背包的思路,建立一个五维度数组dp[i][j][k] ...

  10. .apply()用法和call()的区别

    Js apply方法详解我在一开始看到javascript的函数apply和call时,非常的模糊,看也看不懂,最近在网上看到一些文章对apply方法和call的一些示例,总算是看的有点眉目了,在这里 ...