微信小程序:基于MySQL+Nodejs的汽车品牌管理系统

        各位好,接上期,今天分享一个通过本地MySQL+Nodejs服务器实现CRUD功能的微信小程序,一起来看看吧~

干货!微信小程序通过NodeJs连接MySQL数据库icon-default.png?t=N7T8https://jslhyh32.blog.csdn.net/article/details/137890154?spm=1001.2014.3001.5502

目录

前言 

一.Mysql数据库准备

二.新建项目

三.CRUD分别对应的前端

四.Nodejs后端代码

五.功能测试


前言 

  • 前端:原生微信小程序
  • 后端:Nodejs服务器
  • 数据库:MySQL8.0.35

        本帖只是一个在技术角度攻坚克难的整理总结,并不是可以直接拿出手的高大上项目,不过只要底层原理清楚,修改前端还是很容易的——即本帖提供一个微信小程序版CRUD系统的框架,大家可以自行改善!博主最近忙着冲毕设,之后要是有时间,回来分享一个升级版。


一.Mysql数据库准备

没什么好说的,先建一张表:

use db2;
create table car(id int comment '序号',name char(5) comment '品牌',country varchar(5) comment '国籍',description text comment '英文名'
);

然后直接用可视化工具录入如下数据:

 

二.新建项目

        新建一个项目,删除掉模版的全部代码,分别定义4个页面:select、add、update、drop。此外,记得创建名为Server的文件夹~ 

另外,本项目没有设置跳转函数、tabbar等功能,大家自行改变编译路径即可跳转~

三.CRUD分别对应的前端

1.查(select)

结构及样式如下:

<view><view id="look"><text style="font-size: 55rpx;">查询功能实现:</text></view><form bindsubmit="submit"><view class="select"><input id="input" name="name" type="text"  placeholder="请输入品牌名"/><button form-type="submit" id="btn">搜索</button></view></form><view id="result"><text>国籍:</text><textarea name="" id="out" cols="30" rows="10">{{text[0].country}}</textarea><text>全名:</text><textarea name="" id="out" cols="30" rows="10">{{text[0].description}}</textarea></view>
</view>
textarea{height: 50rpx;width: 100%;
}
#look{margin-top: 20px;margin-bottom: 20px;
}
#input{border: 1px solid gray;
}
#btn{margin-top: 10px;
}
#out{border: 1px solid gray;
}
#bottom{margin-top: 50px;
}
#result{margin-top: 20px;
}

 完整的JavaScript代码:


Page({data: {text:{}},onLoad: function (options) {},onReady: function () {},onShow: function () {},onHide: function () {},onUnload: function () {},onPullDownRefresh: function () {},onReachBottom: function () {},onShareAppMessage: function () {},//查询
submit:function(e){var that=thiswx.request({method:'POST',data:e.detail.value,url: 'http://127.0.0.1:3000/select',success:function(res){// console.log(res.data)that.setData({text:res.data})}})
}
})

2.删(drop)

<view><view id="look"><text>根据名字删除!</text></view><form bindsubmit="submit"><view class="select"><input id="input" name="name" type="text"  placeholder="品牌"/><button form-type="submit" id="btn">删除</button></view></form><view id="result"><text>搜索结果:</text><textarea name="" id="out" cols="30" rows="10">{{text[0].description}}</textarea></view>
</view>

wxss基本上都一样,用上一个就行~

submit:function(e){var that=thiswx.request({method:'POST',data:e.detail.value,url: 'http://127.0.0.1:3000/drop',success:function(res){// console.log(res.data)that.setData({text:res.data})}})
}

 其他部分的JavaScript也一样,这里仅给出绑定了“删除”按钮的函数。

3.增(add)

<view><view id="look"><text>增加一个数据~</text></view><form bindsubmit="add"><view class="select"><input id="input" name="id" type="number"  placeholder="id"/><input id="input" name="name" type="text" placeholder="名字" /><input id="input" name="country" type="text" placeholder="国籍" /><input id="input" name="description" type="text" placeholder="全名" /><button form-type="submit" id="btn">增加</button></view></form>
</view>
add:function(e){var that=thisconsole.log(e.detail.value.name)wx.request({method:'POST',data:{id:e.detail.value.id,name:e.detail.value.name,country:e.detail.value.country,description:e.detail.value.description},url: 'http://127.0.0.1:3000/add',success:function(res){that.setData({text:res.data})}})
}

4.改(update)

<view><view id="look"><text>修改一个数据~</text></view><form bindsubmit="update1"><view class="select"><input id="input" name="name" type="number"  placeholder="名字"/><input id="input" name="id" type="number"  placeholder="id"/><button form-type="submit" id="btn">修改</button></view></form>
</view>
update1:function(e){var that=thiswx.request({method:'POST',data:{id:e.detail.value.id,name:e.detail.value.name},url: 'http://127.0.0.1:3000/update1',success:function(res){that.setData({text:res.data})}})
}

5.tips:

  • 总的来说,查询是最简单的,删除和增加由于需要传参会更复杂一些,改的业务逻辑相当于先查再增——不过如果在sql语句中直接写出来就没有这么复杂了
  • 发送请求的路径一定要写对,这个在第四大节细说:

url: 'http://127.0.0.1:3000/update1',

四.Nodejs后端代码

server文件怎么建立这里就不赘述了,上期说的很齐全:

干货!微信小程序通过NodeJs连接MySQL数据库icon-default.png?t=N7T8https://jslhyh32.blog.csdn.net/article/details/137890154?spm=1001.2014.3001.5502

整体预览一下Server.js的内容:(可以直接沾)

const express=require('express')
const bodyParser =require('body-parser')
const app=express()
const mysql = require('mysql')
app.use(bodyParser.json())//处理post请求
app.post('/',(req,res) => {console.log(req.body)res.json(req.body)
})app.post('/add',(req,res)=>{// console.log(req.body.name)data=req.bodyvar connection=mysql.createConnection({host:'localhost',user:'root',password:'123456',database:'db2'})connection.connect();connection.query('INSERT INTO car SET ?', data, (error, results, fields) => {if (error) throw error;res.json({ message: '数据保存成功' });});connection.end();
})app.post('/show',(req,res)=>{console.log(req.body.name)const a=req.body.namevar connection=mysql.createConnection({host:'localhost',user:'root',password:'123456',database:'db2'})connection.connect();connection.query("select * from car where name='"+a+"'",function(error,results,fields){if(error) throw console.error;res.json(results)console.log(results)})connection.end();
})app.post('/drop',(req,res)=>{console.log(req.body.name)const a=req.body.namevar connection=mysql.createConnection({host:'localhost',user:'root',password:'123456',database:'db2'})connection.connect();connection.query("delete from car where name='"+a+"'",function(error,results,fields){if(error) throw console.error;res.json(results)console.log(results)})connection.end();
})app.post('/update1',(req,res)=>{console.log(req.body.name)data=req.bodyconst id=req.body.idconst name=req.body.namevar connection=mysql.createConnection({host:'localhost',user:'root',password:'123456',database:'db2'})connection.connect();connection.query("update car set id ="+id+" where name='"+name+"'",function(error,results,fields){if(error) throw console.error;res.json(results)console.log(results)})connection.end();
})app.listen(3000,()=>{console.log('server running at http://127.0.0.1:3000')
})
  • form表单用什么方式传参就调用app的什么方法,路径即为wx.request中的url最后一级,必须保持对应!
  • 在query方法里面输入SQL语句,传参记得用占位符,上面4种基础业务已经给大家写好了,自行品味。另外就是单引号和双引号别用串!
  • 每次使用前记得先启动node服务器,别犯低级错误;修改了server.js必须重新启动,不然无效

 

五.功能测试

原数据:

增:

删:

改:

查:


如上即为全文内容~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/640042.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

针对窗口数量多导致窗口大小显示受限制的问题,使用滚动条控制窗口

建议&#xff1a;首先观察结果展示&#xff0c;判断是否可以满足你的需求。 目录 1. 问题分析 2. 解决方案 2.1 界面设计 2.2 生成代码 2.3 源码实现 3. 结果展示 1. 问题分析 项目需要显示的窗口数量颇多&#xff0c;主界面中&#xff0c;如果一次性显示全部窗口&#x…

飞书小技巧:markdown导出

文章目录 下载Feishu2Md飞书应用配置配置feishu2md工具绑定应用导出markdown 下载Feishu2Md Feishu2Md 飞书应用配置 进入飞书开发者后台 https://open.feishu.cn/app。 点击“创建企业自建应用”&#xff0c;并填写应用名称等信息。而后点击创建。 PS: 此处作者创建应用名…

面向对象设计与分析40讲(25)中介模式、代理模式、门面模式、桥接模式、适配器模式

文章目录 门面模式代理模式中介模式 之所以把这几个模式放到一起写&#xff0c;是因为它们的界限比较模糊&#xff0c;结构上没有明显的差别&#xff0c;差别只是语义上。 这几种模式在结构上都类似&#xff1a; 代理将原本A–>C的直接调用变成&#xff1a; A–>B–>…

网渲应用领域有哪些?渲染100邀请码1a12

网渲是一种利用云计算技术把本地渲染上传到云端进行的过程&#xff0c;它极大提高了渲染效率&#xff0c;摆脱了本地限制&#xff0c;使用网渲的领域有很多&#xff0c;这里我们列举下。 1、影视制作 在影视制作当中&#xff0c;对于需要大量特效和动画效果的电影来说&#x…

【STM32】嵌入式实验二 GPIO 实验:数码管

实验内容&#xff1a; 编写程序&#xff0c;在数码管上显示自己的学号。 数码管相关电路&#xff1a; PA7对应的应该是段码&#xff0c;上面的图写错了。 注意&#xff1a;选中数码管是低电平选中&#xff1b;并且用74HC595模块驱动输出的段码&#xff0c; 这个模块的学习可以…

太奇怪了!99%的人没见过的Oracle故障:网络恢复后,集群的监听和vip无法启动

故障描述 15:46操作系统日志出现net4、net5网卡down&#xff0c;15:53分钟的网络恢复。网络中断是由于db汇聚交换机出现了问题。 网络恢复后&#xff0c;节点1的监听和vip无法启动。 故障分析 查看grid alert日志可以看到监听资源确实没有正常启动。 由于监听资源是crs的Ora…

有了可视化工具,你定制设计得瑟瑟发抖了吧,其实你想多了。

目前市面上有N多可视化的工具&#xff0c;可以做成可视化大屏&#xff0c;甚至有很多B端系统也附带可视化页面&#xff0c;据此就有很多人开始怀疑我们这些做定制开发的&#xff0c;还有啥生存空间。 其实你真的多虑了&#xff0c;存在即合理&#xff0c;我们承认可视化工具的标…

weblogic反序列化漏洞(CVE-2017-10271)复现

直接用vuluhub搭建现成的靶场做 访问靶场 打开是这样表示成功 想反弹shell 就先开启kali1的nc监听&#xff0c;这就监听2233端口吧 linux&#xff1a;nc -l -p 2233 抓包修改为攻击数据包 ip和端口可以任意修改 反弹的shell 还可以写入文件shell 只需要把提供的poc POS…

URL解析

目录 URIURLURL语法相对URLURL中的转义 现在与未来PURL 在 URL出现之前&#xff0c;人们如果想访问网络中的资源&#xff0c;就需要使用不同的 应用程序&#xff0c;如共享文件需要使用 FTP程序&#xff0c;想要发送邮件必须使用 邮件程序&#xff0c;想要看新闻那只能使用…

Agent 智能体食用指南

Agent 智能体食用指南 三年前都在 ALL in AI&#xff0c;一年前都在 ALL in LLM&#xff0c;现在都在 ALL in AgentAutoGEN分析MetaGPT 分析RAG 分析MOE 多专家分析 三年前都在 ALL in AI&#xff0c;一年前都在 ALL in LLM&#xff0c;现在都在 ALL in Agent 科技圈焦点&…

【Java】常见锁策略 CAS机制 锁优化策略

前言 在本文会详细介绍各种锁策略、CAS机制以及锁优化策略 不仅仅局限于Java&#xff0c;任何和锁相关的话题&#xff0c;都可能会涉及到下面的内容。 这些特性主要是给锁的实现者来参考的. 普通的程序猿也需要了解一些, 对于合理的使用锁也是有很大帮助的 文章目录 前言✍一、…

【笔试强训】day8

没啥好说&#xff0c;都是一遍过 1.求最小公倍数 思路&#xff1a; 求lcm。其实就是两数之乘积除以两个数的gcd。gcd就是是求两个数的最大公约数。 代码&#xff1a; #define _CRT_SECURE_NO_WARNINGS 1 #include <iostream> using namespace std;int gcd(int a, int …