nodejs+express+mysql 增删改查

蔚落 2022-04-15 00:44 455阅读 0赞

写在最前面的话:

  1. 鉴于评论区的问题有点超出自己的想象,故重拾express,从头开始重新敲了一遍基于express的增删改查,希望大家有疑问先点击**[这里][Link 1]**瞧一瞧,(完整项目代码在那个文章有下载链接,解压就可以直接用了)

  1. 之前,一直使用的是nodejs+thinkjs来完成自己所需的项目需求,而对于nodejs中另外一中应用框架express却了解的少之又少,这两天就简单的了解了一下如何使用express来做一些数据库的增删改查。
  2. **准备工作:**
  3. 所需工具:电脑上要安装好nodejs(官网https://nodejs.org/en/),下载并安装好nodejs之后,需要在cmd中再安装好express框架:
  4. npm install express-generator -g
  5. 安装完毕之后,检查一下是否安装成功:

934768-20160719163301154-170621185.jpg

  1. 还有一个工具就是连接数据库操作的Navicat客户端(我们平常连接数据库的工具,挺好用的。)

934768-20160719163718451-1380218840.jpg

  1. 准备好这些工具之后,就可以开始我们的数据库操作了(记得电脑上也要装上webstroms,这个就跳过不说了)。
  2. 着手demo1.打开webstroms,新建一个express项目:

934768-20160719164438826-2080395123.jpg

  1. 接着选择好文件类型:

934768-20160719164513638-2103985620.jpg

  1. 在这里,我选择的是EJS模板引擎,这个凭自己喜好决定。于是新建好的项目目录就是酱紫滴:

934768-20160719164730779-1529363862.jpg

  1. 大家应该注意到了,views文件夹下的并非是平常所见的.html文件,而是.ejs文件,于是就需要我们自己来把它默认的引擎从EJS改成HTML,修改的操作就是打开app.js文件,然后将其中一段代码注释掉并修改成如下:
  2. // view engine setup
  3. // app.set('views', path.join(__dirname, 'views'));
  4. // app.set('view engine', 'ejs');
  5. //注释掉默认的,自己手动修改默认引擎
  6. app.set('views', path.join(__dirname, 'views'));
  7. var template = require('art-template');
  8. template.config('base', '');
  9. template.config('extname', '.html');
  10. app.engine('.html', template.__express);
  11. app.set('view engine', 'html');
  12. 然后将原有默认的两个.ejs文件删掉,并创建相应的.html文件,在这个小demo中,鉴于自己所需的,故重新建好的文件目录是酱紫滴:

934768-20160719165912482-1904497679.jpg

  1. 2.数据库准备:打开Navicat客户端,新建一个数据库,脚本如下:
  2. create database testdb;
  3. use testdb;
  4. create table userinfo(
  5. id int not null auto_increment,
  6. name varchar(20) not null,
  7. age int not null,
  8. primary key (id)
  9. )
  10. 这样我们所需的数据库就有了。

934768-20160719170701029-2057340175.jpg

  1. 接着就是将项目和此数据库连接起来——在刚才新建的db.js中,来实现连接数据库:
  2. //db.js
  3. /**
  4. * Created by Administrator on 2016/7/19.
  5. */
  6. // 连接MySQL
  7. var mysql = require('mysql');
  8. var pool = mysql.createPool({
  9. host: 'localhost',
  10. user: 'root',
  11. password: 'root',
  12. database: 'testdb'
  13. });
  14. function query(sql, callback) {
  15. pool.getConnection(function (err, connection) {
  16. // Use the connection
  17. connection.query(sql, function (err, rows) {
  18. callback(err, rows);
  19. connection.release();//释放链接
  20. });
  21. });
  22. }
  23. exports.query = query;
  24. 我是将代码写在users.js中,而默认的index中就都没有写任何代码,于是完整的代码如下:

①users.html:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>{
  6. {title}}</title>
  7. </head>
  8. <body>
  9. <form action="/users/search" method="post">
  10. 姓名:<input type="text" name="s_name" value="{
  11. {s_name}}"><br>
  12. 年龄:<input type="text" name="s_age" value="{
  13. {s_age}}"><br>
  14. <input type="submit" value="查询">
  15. </form>
  16. <table>
  17. <tr>
  18. <th>编号</th>
  19. <th>姓名</th>
  20. <th>年龄</th>
  21. <th>操作</th>
  22. </tr>
  23. {
  24. {each datas as value index}}
  25. <tr>
  26. <td>{
  27. {value.id}}</td>
  28. <td>{
  29. {value.name}}</td>
  30. <td>{
  31. {value.age}}</td>
  32. <td><a href="/users/add">新增</a></td>
  33. <td><a href="/users/del/{
  34. {value.id}}">删除</a></td>
  35. <td><a href="/users/toUpdate/{
  36. {value.id}}">修改</a></td>
  37. </tr>
  38. {
  39. {/each}}
  40. </table>
  41. </body>
  42. </html>
  43. ②add.html
  44. <!DOCTYPE html>
  45. <html lang="en">
  46. <head>
  47. <meta charset="UTF-8">
  48. <title>新增页面</title>
  49. </head>
  50. <body>
  51. <form action="/users/add" method="post">
  52. 姓名:<input type="text" name="name"><br>
  53. 年龄:<input type="text" name="age"><br>
  54. <input type="submit" value="提交">
  55. </form>
  56. </body>
  57. </html>
  58. ③update.html
  59. <!DOCTYPE html>
  60. <html lang="en">
  61. <head>
  62. <meta charset="UTF-8">
  63. <title>修改页面</title>
  64. </head>
  65. <body>
  66. <form action="/users/update" method="post">
  67. <input type="hidden" value="{
  68. {datas[0].id}}" name="id">
  69. 姓名:<input type="text" name="name" value="{
  70. {datas[0].name}}"><br>
  71. 年龄:<input type="text" name="age" value="{
  72. {datas[0].age}}"><br>
  73. <input type="submit" value="提交">
  74. </form>
  75. </body>
  76. </html>
  77. ④user.js
  78. var express = require('express');
  79. var router = express.Router();
  80. //引入数据库包
  81. var db = require("./db.js");
  82. /* GET users listing. */
  83. // router.get('/', function(req, res, next) {
  84. // res.send('respond with a resource');
  85. // });
  86. /**
  87. * 查询列表页
  88. */
  89. router.get('/', function (req, res, next) {
  90. db.query('select * from userinfo', function (err, rows) {
  91. if (err) {
  92. res.render('users', {title: 'Express', datas: []}); // this renders "views/users.html"
  93. } else {
  94. res.render('users', {title: 'Express', datas: rows});
  95. }
  96. })
  97. });
  98. /**
  99. * 新增页面跳转
  100. */
  101. router.get('/add', function (req, res) {
  102. res.render('add');
  103. });
  104. router.post('/add', function (req, res) {
  105. var name = req.body.name;
  106. var age = req.body.age;
  107. db.query("insert into userinfo(name,age) values('" + name + "'," + age + ")", function (err, rows) {
  108. if (err) {
  109. res.end('新增失败:' + err);
  110. } else {
  111. res.redirect('/users');
  112. }
  113. })
  114. });
  115. /**
  116. * 删
  117. */
  118. router.get('/del/:id', function (req, res) {
  119. var id = req.params.id;
  120. db.query("delete from userinfo where id=" + id, function (err, rows) {
  121. if (err) {
  122. res.end('删除失败:' + err)
  123. } else {
  124. res.redirect('/users')
  125. }
  126. });
  127. });
  128. /**
  129. * 修改
  130. */
  131. router.get('/toUpdate/:id', function (req, res) {
  132. var id = req.params.id;
  133. db.query("select * from userinfo where id=" + id, function (err, rows) {
  134. if (err) {
  135. res.end('修改页面跳转失败:' + err);
  136. } else {
  137. res.render("update", {datas: rows}); //直接跳转
  138. }
  139. });
  140. });
  141. router.post('/update', function (req, res) {
  142. var id = req.body.id;
  143. var name = req.body.name;
  144. var age = req.body.age;
  145. db.query("update userinfo set name='" + name + "',age='" + age + "' where id=" + id, function (err, rows) {
  146. if (err) {
  147. res.end('修改失败:' + err);
  148. } else {
  149. res.redirect('/users');
  150. }
  151. });
  152. });
  153. /**
  154. * 查询
  155. */
  156. router.post('/search', function (req, res) {
  157. var name = req.body.s_name;
  158. var age = req.body.s_age;
  159. var sql = "select * from userinfo";
  160. if (name) {
  161. sql += " and name='" + name + "' ";
  162. }
  163. if (age) {
  164. sql += " and age=" + age + " ";
  165. }
  166. sql = sql.replace("and","where");
  167. db.query(sql, function (err, rows) {
  168. if (err) {
  169. res.end("查询失败:", err)
  170. } else {
  171. res.render("users", {title: 'Express', datas: rows, s_name: name, s_age: age});
  172. }
  173. });
  174. });
  175. module.exports = router;
  176. 效果展示:
  177. 1.刚打开页面的时候,由于数据库没有数据,因此页面效果是酱紫滴:

934768-20160719171908872-314575746.jpg

  1. **默认端口号是3000,由于我的3000被占用,因此在bin/www中修改端口号;**
  2. 2.完整的页面效果是酱紫滴:

934768-20160719172200435-2001358107.jpg

  1. 其中,新增、删除以及修改也是可以正常使用的。
  2. 到此,简单的使用nodejs+express+MySQLcruddemo就完成了。每次多学一点知识的时候,总是少不了好同事的帮忙(附上好同事的博客园地址,帮助自己的同时或许也可以帮助更多的小伙伴~~~[http://www.cnblogs.com/vipzhou/][http_www.cnblogs.com_vipzhou])。如果有问题,**[请戳这里][Link 1]**,也许会对你有所启发……

作者:郑叶叶
出处:http://www.cnblogs.com/zhengyeye
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。

发表评论

表情:
评论列表 (有 0 条评论,455人围观)

还没有评论,来说两句吧...

相关阅读

    相关 MySQL 增删

    MySQL 增删改查 虽然经常对数据库进行操作,但有时候一些sql语句还是会忘记,因此总结一下,方便记忆。 一 对库操作 1 创建数据库 > create dat