微信小程序:基于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.mzph.cn/news/827245.shtml

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

相关文章

gitlab 16.2.4 恢复

新创建新gitlab&#xff0c;版本需和备份的gitlab版本一致 docker run -d -p 322:22 -p 822:80 --name gitlab_1 gitlab/gitlab-ce:16.2.4-ce.0 进入容器内部 docker exec -it c51685817e27 /bin/bash 新的环境至少运行过一次&#xff0c;sudo gitlab-ctl reconfigu…

深入docker-swarm overlay网络模型

目录 1.简介 2.网络模型 3.docker_gwbridge网络 3.1.docker_gwbridge网关地址 3.2.检查docker_gwbridge网络 3.2.1.查找任务容器eth接口 3.2.2.查找ingress-sbox容器eth接口 4.检查ingress网络 4.1.检查ingress网络 4.2.检查ingress网络的命名空间 4.2.1.查找任务容…

Windows搭建Svn服务器

1、svn概述 1.1、svn简介 SVN&#xff08;Subversion&#xff09;是一个开源的版本控制系统&#xff0c;用于管理代码的版本控制和协作开发。它提供了一系列的命令行工具&#xff0c;以及一套客户端和服务器架构&#xff0c;用于管理代码的版本控制和协作。 在Windows系统&a…

python与PySpark

1、Spark是Apache基金会 下的顶级开源项目&#xff0c;用于对海量数据经行大规模的分布式技术&#xff1b; 2、P有Spark是Spark的python实现&#xff0c;用于python中完成Spark的任务开发&#xff1b; 3、安装&#xff1a;可通过cmd终端进行安装 pip install PySpark也可以通…

npm 打包后自动压缩成zip文件

在package.json里面的scripts下面的build添加 powershell -NoProfile -ExecutionPolicy Unrestricted -Command ./zip.ps1 新的build就是 "build": "vite build && esno ./build/script/postBuild.ts && powershell -NoProfile -ExecutionP…

React 18的并发渲染:颠覆传统的性能飞跃

React 18 引入的并发渲染&#xff08;Concurrent Rendering&#xff09;是一个革命性的特性&#xff0c;它改变了 React 应用的渲染方式&#xff0c;使得渲染过程更加高效且可控。 并发渲染的核心原理在于将渲染任务拆分为多个可中断和可恢复的小任务&#xff0c;并根据优先级…

STM32的GPIO控制寄存器开发

寄存器GPIO控制 寄存器地址 寄存器地址计算 某个寄存器地址&#xff0c;由三个参数决定&#xff1a;1、总线基地址&#xff08;BUS_BASE_ADDR&#xff09;&#xff1b;2&#xff0c;外设基于总线基地址的偏移量&#xff08;PERIPH_OFFSET&#xff09;&#xff1b;3&#xff…

SQL CASE 语句

在SQL中的 CASE 语句是一种条件表达式&#xff0c;它允许你在查询中根据条件逻辑返回不同的值。CASE 语句通常有两种形式&#xff1a;简单 CASE 表达式和搜索 CASE 表达式。在我之前给出的优化SQL查询的例子中&#xff0c;使用了简单 CASE 表达式。 这里是简单 CASE 表达式的基…

百面算法工程师 | 分类和聚类

目录 6.1 为什么正确率有时不能有效评估分类算法&#xff1f; 6.2 什么样的分类器最好&#xff1f; 6.3 什么是聚类&#xff0c;你知道哪些聚类算法&#xff1f; 6.4 K-Means聚类算法如何调优? 6.5 K-Means聚类算法如何选择初始点? 6.6 K-Means聚类聚的是特征还是样本 …

反编译jar包

1. 复制java-compiler.jar /Applications/IntelliJ IDEA.app/Contents/plugins/java-decompiler/lib/java-decompiler.jar 2.执行命令 java -cp java-decompiler.jar org.jetbrains.java.decompiler.main.decompiler.ConsoleDecompiler app.jar app app.jar是要反编译的jar…

微服务架构中的分库分表设计

在微服务架构中&#xff0c;分库分表设计是优化数据存储和查询性能的重要手段。通过合理的分库分表策略&#xff0c;可以提高系统的可扩展性、灵活性和响应速度。以下是关于微服务架构中分库分表设计的详细分析。 1. 概要设计 1.1 分库设计 1.1.1 垂直切分 &#xff08;1&a…

const loading = ref(true)中loading 是常亮还是变量

在Vue 3中使用Composition API时&#xff0c;当你声明 const loading ref(true)&#xff0c;loading 是一个响应式的引用&#xff08;reactive reference&#xff09;&#xff0c;而不是一个常规的JavaScript变量。 这里的ref函数是Vue提供的&#xff0c;用来创建一个响应式的…

【面试经典 150 | 链表】删除链表的倒数第 N 个结点

文章目录 写在前面Tag题目来源解题思路方法一&#xff1a;统计节点个数方法二&#xff1a;双指针 写在最后 写在前面 本专栏专注于分析与讲解【面试经典150】算法&#xff0c;两到三天更新一篇文章&#xff0c;欢迎催更…… 专栏内容以分析题目为主&#xff0c;并附带一些对于本…

向媒体投稿有了好方法财政单位信息宣传工作简单又轻松

当我初涉财政单位的信息宣传岗位,肩负起对外展示单位风采、传播政策信息的重要职责时,我深刻体验到了投稿之路的艰辛曲折。初期,对于如何有效对接媒体并成功发表稿件,我感到一片茫然,仿佛置身于浩瀚的信息海洋中,无从下手。 那时,我的工作日常就是广泛搜集各类媒体的联系方式,特…

{“errMsg“:“insertXWebCamera:fail appid privacy api banned“}

问题描述&#xff1a;微信小程序&#xff0c;在体验版本测试时&#xff0c;调用摄像头OK&#xff0c;没有任何问题&#xff0c;部署发布版本后&#xff0c;日志报错内容&#xff1a;{"errMsg":"insertXWebCamera:fail appid privacy api banned"}&#xff…

CountDownLatch倒计时器源码解读与使用

&#x1f3f7;️个人主页&#xff1a;牵着猫散步的鼠鼠 &#x1f3f7;️系列专栏&#xff1a;Java全栈-专栏 &#x1f3f7;️个人学习笔记&#xff0c;若有缺误&#xff0c;欢迎评论区指正 目录 1. 前言 2. CountDownLatch有什么用 3. CountDownLatch底层原理 3.1. count…

代理设置方法 ubuntu git

目录 ubuntu设置代理方法 git 中 ubuntu设置代理方法 &#xff08;1&#xff09; .bashrc中写 或者 &#xff08;2&#xff09; 当自己的 虚拟机选择default switch&#xff0c;保持了虚拟机与本机的联通性&#xff08;host模式好像&#xff09;&#xff0c;这时&#xff0…

嵌入式学习——C语言基础——day6

1. 一维数组的定义 相同类型有限数据的一个集合 数据类型 数组名[元素个数]; 注意&#xff1a; 1. 数组中的元素必须为同一类型 2. 元素个数有限个 3. 数组定义时&#xff0c;元素个数必须为常量或者常量表达式&#xff0c;不能为变量 2. 数组元素的访问 数组名[元素下标] 元素…

阿里通义千问Qwen-7B-Chat大模型简介

阿里通义千问Qwen-7B-Chat是由阿里云研发的一系列大语言模型中的一个&#xff0c;属于通义千问大模型系列。这个模型具有70亿参数规模&#xff0c;是基于Transformer架构构建的&#xff0c;专门为理解和生成人类语言而设计。Qwen-7B-Chat在超大规模的预训练数据集上进行训练&am…

深度剖析图像处理—边缘检测

什么是边缘检测 边缘检测(Edge Detection)就是提取图像中的边缘点(Edge Point)。边缘点是与周围像素相比灰度值有阶跃变化或屋顶状变化的像素。边缘常存在于目标与背景之间、目标与目标之间、目标与其影子之间。 ​ 在图像处理和图像分析中&#xff0c;经常要用到边缘(Edge)、边…