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

embedded/2024/12/23 5:10:22/

        各位好,接上期,今天分享一个通过本地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后端代码

五.功能测试


前言 

        本帖只是一个在技术角度攻坚克难的整理总结,并不是可以直接拿出手的高大上项目,不过只要底层原理清楚,修改前端还是很容易的——即本帖提供一个微信小程序版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.ppmy.cn/embedded/23446.html

相关文章

前端开发攻略---用原生JS在网页中也能实现文本转语音

1、原理 语音合成 (也被称作是文本转为语音&#xff0c;英语简写是 tts) 包括接收 app 中需要语音合成的文本&#xff0c;再在设备麦克风播放出来这两个过程。 Web API中对此有一个主要控制接口 SpeechSynthesis&#xff0c;外加一些处理如何表示要被合成的文本 (也被称为 utte…

react挂载后函数

在React中&#xff0c;当组件被挂载到DOM后&#xff0c;你可以使用生命周期方法 componentDidMount() 来执行某些操作。这是React组件生命周期中的一个重要阶段&#xff0c;此时组件已经被渲染并插入到DOM中。 componentDidMount() 是一个在组件输出到DOM后立即自动调用的方法…

Redux(类似vue中的vuex和pina)

什么是Redux Redux 是React最常用的集中状态管理工具&#xff0c;类似于Vue中的Pinia&#xff08;Vuex&#xff09;&#xff0c;可以独立于框架运行 作用&#xff1a;通过集中管理的方式管理应用的状态 为什么要使用Redux&#xff1f; 独立于组件&#xff0c;无视组件之间的层…

python初级笔记5 面向对象

创造类的方式 class 类名&#xff08;object&#xff09;&#xff1a; 属性 方法 类名用大驼峰命名法 函数在类中叫做方法 类名后面的括号用来继承 class Student(object):name Noneage Noneid Noneprint(Student) 结果&#xff1a; E:\Python\python.exe E:\学习笔记\Py…

Vue 3 快速上手指南(第二期)

&#x1f4da; Vue 3 快速上手指南 在本文中&#xff0c;我将介绍 Vue 3 的基础知识&#xff0c;我们将了解 1.setup &#x1f4da; 如果你想深入学习 Vue 3&#xff0c;建议阅读官方文档并尝试更复杂的示例和项目。 &#x1f449; 可以通过以下链接访问 Vue 3 官方文档&#x…

初识计算机网络

端系统 "端系统"是指网络中的终端设备或主机&#xff0c;它们是网络通信的起始点和终点。端系统可以是个人计算机、服务器、路由器、智能手机、平板电脑等各种设备&#xff0c;它们通过网络连接进行通信和数据交换。 在因特网中&#xff0c;端系统通过网络协议&#…

vite和webpacke的常规配置

文章目录 1、vite和webpacke的区分2、vite的常规配置介绍主要部分介绍vite基本配置示例 3、webpacke的常规配置介绍主要部分介绍Webpack 基本配置示例 1、vite和webpacke的区分 相同点&#xff1a; 都是构建工具&#xff0c;用于资源打包 &#xff1b; 都有应用到摇树原理 tre…

.NET WinForm开放中的 窗体的 Designer.cs作用

一般窗体窗体 在资源管理器中会呈现 xxx.cs xxx.Designer.cs xxx.resx 》》》 .resx 是存放资源文件的&#xff0c;没啥好说的 xxx.cs 和 xxx.Designer.cs 都是partial类&#xff0c;而他们类名是一样的&#xff0c;所以在编译会生成一个文件。 xxx.Designer.cs 代码中有两…