工具:navicat、node-red
建立数据库
在navicat上建立数据库
![](https://i-blog.csdnimg.cn/blog_migrate/59842bc997bf38b3ef1b60884fda2424.png)
node-red操作
打开node-red,把红线部分的地址复制,在网页输入。(终端不能关闭)
![](https://i-blog.csdnimg.cn/blog_migrate/8320158d907613ab6426f25134a45105.png)
安装所需节点
![](https://i-blog.csdnimg.cn/blog_migrate/21ae8fa847ef44218c687812c76cff77.png)
node-red-node-mysql、node-red-dashboard节点
订阅主题mqtt节点
![](https://i-blog.csdnimg.cn/blog_migrate/44947cdb99dba5a777fecd2a09bf17dc.png)
进行分支
![](https://i-blog.csdnimg.cn/blog_migrate/3df7def429f9c7cda881df75835a1399.png)
创建界面,1为界面大小
![](https://i-blog.csdnimg.cn/blog_migrate/1407dd90041835c1a66a226b658df086.png)
点击添加之后出现在form节点设置变量,以下面这张表为例子
![](https://i-blog.csdnimg.cn/blog_migrate/a22f537e802daa6ba463791e14b2592f.png)
gno为主键
![](https://i-blog.csdnimg.cn/blog_migrate/383964b0cc4a713676357202dcf28d79.png)
连接function节点,在function节点中写入以下代码
var gno = msg.payload.gno;
var gname = msg.payload.gname;
var gtel = msg.payload.gtel;
var gmima = msg.payload.gmima;
var gaddress = msg.payload.gaddress;
msg.payload = [gno, gname, gtel, gmima, gaddress];
msg.topic = "insert into gys (`gno`,`gname`,`gtel`,`gmima`,`gaddress`) values(?,?,?,?,?);"
return msg;
拖入mysql节点
1为端口,默认状态为(3306),根据自身mysql的端口填写。
2为开头建立的数据库名称
![](https://i-blog.csdnimg.cn/blog_migrate/2311a7daeda4ab187743a47af0b2151a.png)
![](https://i-blog.csdnimg.cn/blog_migrate/c37b72b9240dd2937dcce060592b0b1b.png)
输入网址http://127.0.0.1:1880/ui可看效果
![](https://i-blog.csdnimg.cn/blog_migrate/bf2a4e3e95f05c0b953e04f52d1b9ebe.png)
插入信息
![](https://i-blog.csdnimg.cn/blog_migrate/71e1ebe15490ef3f58db60070231434c.png)
下图就是在navicat上更新的记录,需要刷新才能看到结果。
![](https://i-blog.csdnimg.cn/blog_migrate/7caca03fd2482143c2aed19ebf274c9d.png)
为了使插入信息更明显,可以加入一些弹窗,这里需要用到notification节点
![](https://i-blog.csdnimg.cn/blog_migrate/716ffe838e922991f4ca8fdfc4ca79b7.png)
以下三个函数只需打印出相关的提示就行例如:
msg.payload = "添加信息成功"
return msg;
![](https://i-blog.csdnimg.cn/blog_migrate/ba69df4dba48edf5d5782dc555177dc2.png)
添加一个catch节点,这是为了处理流中报错的节点
![](https://i-blog.csdnimg.cn/blog_migrate/c7a2a9d1d060e3889a48a6c49425cea3.png)
显示列表
1:时间戳,只需要在inject节点勾选立即执行
2:function节点添加以下:
msg.topic = "select * from gys;"
return msg;
3:mysql节点,不需要改任何东西,但为了区分,把名字改成了2
![](https://i-blog.csdnimg.cn/blog_migrate/74be44b6cf3030700bd525043f84d088.png)
加入table节点,添加列表的各个属性
![](https://i-blog.csdnimg.cn/blog_migrate/e03c1df396eec07fea7218896b250a95.png)
![](https://i-blog.csdnimg.cn/blog_migrate/7cb329324a0679715ac9d614a2ae15de.png)
刷新button节点
![](https://i-blog.csdnimg.cn/blog_migrate/0d7dde5937cc4386b54e74689e835d96.png)
信息暂存:function节点
flow.set("gno",msg.payload.gno)
msg.payload="是否删除供应商?";
return msg;
确认删除:notification节点
![](https://i-blog.csdnimg.cn/blog_migrate/1df12a3cb159dc50f49e3be3d55b73f3.png)
删除:function节点
var choice=msg.payload;
var gno=flow.get("gno")
if (choice =="确认"){
msg.payload =[gno];
msg.topic="delete from gys where gno=?;";
return msg;
}
删除成功:function节点
msg.payload="删除成功"
return msg;
提示弹窗:notification节点
![](https://i-blog.csdnimg.cn/blog_migrate/8471371384d152b52131bcb573086401.png)
捕获一个节点:catch节点
![](https://i-blog.csdnimg.cn/blog_migrate/1a4cb732703b6024fc57efee22bb316d.png)
信息删除失败:function节点
msg.payload="信息删除失败"
return msg;
效果如下
![](https://i-blog.csdnimg.cn/blog_migrate/dcc00dca7b7b552f5460c2c562f3b95c.png)
![](https://i-blog.csdnimg.cn/blog_migrate/97c01c0f2627cde76d1840f117188257.png)
在navicat上显示
![](https://i-blog.csdnimg.cn/blog_migrate/2119153ffb646851bb1e45dc5152325d.png)