sql+go+vue+android

在这里插入图片描述

数据库MySql

环境搭建MySql
  • mysql 安装

推荐下载地址:
https://mirrors.tuna.tsinghua.edu.cn/mysql/downloads/MySQL-5.7/
mysql-5.7.36-winx64.msi 推荐版本
在这里插入图片描述

  • Navicate 安装

推荐下载地址:
https://www.formysql.com/ 官网下载
推荐使用最新版本
在这里插入图片描述

基本操作
  • 列表
select * from tabel
select * from device; // 查出设备表里的所有内容

在这里插入图片描述

  • 增加数据

唯一健不能重复

 INSERT INTO table (`column1`, `column2`, ....) VALUES ('value1', 'value2', ....)

 INSERT INTO `device`(`uid`, `device_img`, `device_name`, `device_conn_mode`) VALUES ('0108', 'test', 'test', 'test'); 

在这里插入图片描述

  • 更新数据

唯一健要指定,使用WHERE来指定是更新哪条

UPDATE table set column1 = value,column2=value where 主健=内容 

UPDATE `device` SET `device_img` = 'test1', `device_name` = 'test2' WHERE `uid` = '0108'

在这里插入图片描述

  • 删除数据

唯一健要指定,使用WHERE来指定是删除哪条

Delete from table where 主健 =  内容

DELETE FROM `device` WHERE `uid` = '0108'

在这里插入图片描述

Go语言

简介与IDE

Go 是一个开源的编程语言,它能让构造简单、可靠且高效的软件变得容易。

  • https://www.runoob.com/go/go-tutorial.html

GoLand 是 Jetbrains 家族的 Go 语言 IDE,有 30 天的免费试用期。

安装也很简单访问 Gogland 的下载页面,根据你当期的系统环境三大平台(Mac、Linux、Windows)下载对应的软件。

  • https://www.runoob.com/go/go-ide.html
    ![在这里插入图片描述](https://img-blog.csdnimg.cn/7e48d56b826847cfacdcfa5aabd1cb42.png#pic_cente

![在这里插入图片描述](https://img-blog.csdnimg.cn/2248bca01eae4fdbb1267d8c8a8d9de4.png#pic_center

3.1、Go语言WEB框架(Gin)的后端系统开发
(一)、连接 MYSQL 数据库

package main

import (
	"fmt"
	_ "github.com/go-sql-driver/mysql"
	"github.com/go-xorm/xorm"
)

func main() {
	var connStr string = "zyzhan:xxx@tcp(xxx:3306)/ioaol_huo_dong?charset=utf8&parseTime=true"

	var engine *xorm.Engine //连接数据库
	engine, err := xorm.NewEngine("mysql", connStr)
	if err != nil {
		fmt.Println(err)
		return
	} //连接测试
	if err := engine.Ping(); err != nil {
		fmt.Println(err)
		return
	}
	defer func(engine *xorm.Engine) {
		err := engine.Close()
		if err != nil {

		}
	}(engine) //延迟关闭数据库
	fmt.Println("数据库链接成功")
}

(二)、数据表结构解析,建立数据表连接

package main

import (
	"github.com/gin-gonic/gin"
	"github.com/go-xorm/xorm"
	sv "myStudy/service"
	"net/http"
)

/*


 */
func main() {
	router := gin.Default()            // 实例方法
	router.GET("/device", QueryDevice) // 实例接口
	err := router.Run("0.0.0.0:9000")  //启动HTTP 服务
	if err != nil {
		return
	}
}

// MsgReturn /*定义返回的数据格式*/
type MsgReturn struct {
	Msg  string      `json: "Msg"`
	Data interface{} `json "Data"`
}

// ModDevice MsgReturn /*定义数据库的数据格式*/
type ModDevice struct {
	Uid              string `xorm:"DEFAULT NULL varchar(45)"`
	DeviceName       string `xorm:"DEFAULT NULL varchar(45)"`
	DeviceImg        string `xorm:"DEFAULT NULL varchar(45)"`
	DeviceConnMode   string `xorm:"DEFAULT NULL varchar(45)"`
	DeviceIp         string `xorm:"DEFAULT NULL varchar(45)"`
	DevicePort       string `xorm:"DEFAULT NULL varchar(45)"`
	DeviceConnStatus string `xorm:"DEFAULT NULL varchar(45)"`
	Comment          string `xorm:"DEFAULT NULL varchar(80)"`
}

func (v *ModDevice) TableName() string {
	return "device"
}

// QueryDevice /*实现连接数据库并从数据表从取出数据*/
func QueryDevice(c *gin.Context) {
	mysql, err := sv.GetEngine()
	if err != nil {
		c.JSON(409, &MsgReturn{Msg: "Open DataBase Failed", Data: nil})
		return
	}
	defer func(mysql *xorm.Engine) {
		err := mysql.Close()
		if err != nil {
			return
		}
	}(mysql)
	mysql.ShowSQL(true)

	var collArr []*ModDevice
	err = mysql.Find(&collArr)
	c.JSON(http.StatusOK, &MsgReturn{Msg: "OK", Data: collArr})
}

(三)、建立接口,并通过APIFOX预览
在这里插入图片描述

(四)、通过 SQL 语句实现JSON格式数据返回

	err = mysql.SQL("SELECT * FROM `device`").Find(&collArr) // 通过 SQL
{
    "Msg": "OK",
    "Data": [
        {
            "Uid": "0101",
            "DeviceName": "视觉分拣机器人",
            "DeviceImg": "device1.png",
            "DeviceConnMode": "modbus",
            "DeviceIp": "1",
            "DevicePort": "9600",
            "DeviceConnStatus": "1",
            "Comment": "0:断开连接,1:连接"
        },
       
    ]
}

(五)、实现传参取数

// QueryIdDevice /* 通过参数来获取指定数据 */
func QueryIdDevice(c *gin.Context) {
	Id := c.Query("id")
	mysql, err := sv.GetEngine()
	if err != nil {
		c.JSON(409, &MsgReturn{Msg: "Open DataBase Failed", Data: nil})
		return
	}
	defer func(mysql *xorm.Engine) {
		err := mysql.Close()
		if err != nil {
			return
		}
	}(mysql)
	mysql.ShowSQL(true)

	var collArr []*ModDevice
	if Id != "" {
		err = mysql.Where("uid=?", Id).Find(&collArr) // 通过XORM
	} else {
		err = mysql.Find(&collArr) // 通过XORM
	}

	c.JSON(http.StatusOK, &MsgReturn{Msg: "OK", Data: collArr})
}

在这里插入图片描述

(六)、向数据表中添加数据

// QueryIdDevice /* 通过参数来获取指定数据 */
func QueryIdDevice(c *gin.Context) {
	resDt := &ModDevice{}
	err := c.BindJSON(resDt) // 所JSON对像解析一下

	mysql, err := sv.GetEngine()
	if err != nil {
		c.JSON(409, &MsgReturn{Msg: "Open DataBase Failed", Data: nil})
		return
	}
	defer func(mysql *xorm.Engine) {
		err := mysql.Close()
		if err != nil {
			return
		}
	}(mysql)
	mysql.ShowSQL(true)

	_, err = mysql.Cols("uid", "device_img", "device_name", "device_conn_mode", "device_ip", "device_port", "device_conn_status", "comment").InsertOne(&ModDevice{Uid: resDt.Uid, DeviceImg: resDt.DeviceImg, DeviceName: resDt.DeviceName, DeviceConnMode: resDt.DeviceConnMode, DeviceIp: resDt.DeviceIp, DevicePort: resDt.DevicePort, DeviceConnStatus: resDt.DeviceConnStatus, Comment: resDt.Comment})

	c.JSON(http.StatusOK, &MsgReturn{Msg: "OK", Data: "添加成功"})
}

在这里插入图片描述
在这里插入图片描述
失败原因: 数据类型不匹配

(七)、修改数据表中的数据

// QueryIdDevice /* 通过参数来获取指定数据 */
func QueryIdDevice(c *gin.Context) {
	resDt := &ModDevice{}
	err := c.BindJSON(resDt) // 所JSON对像解析一下

	mysql, err := sv.GetEngine()
	if err != nil {
		c.JSON(409, &MsgReturn{Msg: "Open DataBase Failed", Data: nil})
		return
	}
	defer func(mysql *xorm.Engine) {
		err := mysql.Close()
		if err != nil {
			return
		}
	}(mysql)
	mysql.ShowSQL(true)

	_, err = mysql.Where("uid=?", resDt.Uid).Update(&ModDevice{DeviceImg: resDt.DeviceImg, DeviceName: resDt.DeviceName, DeviceConnMode: resDt.DeviceConnMode, DeviceIp: resDt.DeviceIp, DevicePort: resDt.DevicePort, DeviceConnStatus: resDt.DeviceConnStatus, Comment: resDt.Comment})

	c.JSON(http.StatusOK, &MsgReturn{Msg: "OK", Data: "编辑成功"})
}

(八)、删除数据表中的数据

// QueryIdDevice /* 通过参数来获取指定数据 */
func QueryIdDevice(c *gin.Context) {
	Id := c.Query("uid")
	if Id == "" {
		c.JSON(http.StatusBadRequest, &MsgReturn{Msg: "error", Data: "没有此ID!"})
		return
	}
	mysql, err := sv.GetEngine()
	if err != nil {
		c.JSON(409, &MsgReturn{Msg: "Open DataBase Failed", Data: nil})
		return
	}
	defer func(mysql *xorm.Engine) {
		err := mysql.Close()
		if err != nil {
			return
		}
	}(mysql)
	mysql.ShowSQL(true)

	_, err = mysql.Where("uid=?", Id).Delete(&ModDevice{})

	c.JSON(http.StatusOK, &MsgReturn{Msg: "OK", Data: "删除"+Id+"成功"})
}

在这里插入图片描述

3.2、vue的前端应用UI控件使用

Node : http://kik.cn/
Npm: npm instll … npm run dev
Vue: https://cn.vuejs.org/
Axios https://www.axios-http.cn/docs/intro
组件的生命周期:
Creaed mounted 入口
Methods 方法声明
Echarts实现数据图表 https://echarts.apache.org/zh/index.html
v-charts 实现封装Echarts https://vue-echarts.github.io/guide/line.html

(一)、建立VUE项目
前端技术栈: vue2 axios ant-design-vue vue-router echarts v-charts
把已建立好的项目拉过来, 为了方便请示数据,我们直接封装了AXIOS,有关AXIOS发送请求的具体情况,这里不说了,有兴趣的可以去网上找些资料看一看,AXIOS就类似我们之前使用的工具 APIFOX, 把请求发出去到后端,后端响应数据过来,然后VUE在处理这些数据,最后通过HTML+CSS来美化页面,下边的项目的文件基本组成部分

在这里插入图片描述
public 静态入口
assets 静态文件主要是图片
components 公用组件
http axios 请求接口封装
router 网站路由
view 网站页面
main.js 入口文件
vue.config.js 配置文件
package.json 配置文件

(二)、通过 AXIOS 与后端进行数据交换
在这里插入图片描述

定义后端接口, 并定义好接口URL

(三)、获取接口数据,并展示到页面中,例: 展示机器的工作状态

<template>
  <div class="">
    {{ list }}
  </div>
</template>

<script>
export default {
  name: "Home.vue",
  data() {
    return {
      list: []
    };
  },
  created() {
    console.log(16);
    this.getData();
  },
  methods: {
    async getData() {
      const res = await this.$Http.device();
      this.list = res["Data"];
    }
  }
};
</script>

<style scoped>

</style>

在这里插入图片描述

(四)、通过按钮修改数据库中的数据,
在这里插入图片描述

(五)、实现增加数据.
在这里插入图片描述在这里插入图片描述

(六)、实现删除
在这里插入图片描述

(七)、 通过ECHART组件实现图表

 let a = 0, b = 0;
      this.list.forEach(d => {
        if(d.DeviceConnStatus === '1') {
          a++;
        } else {
          b++;
        }
      });
      this.chartData.rows[0].value = a;
      this.chartData.rows[1].value = b;

在这里插入图片描述

第四章:移动互联APP的工业应用实践与开发
4.1、Android 与前端应用
(一)、WEBAPP( Vue )与原生APP(flutter, JAVA)
现在APP研发有两个主流的方向:原生App及Web App。那麽你是否知道这两者有何区别?什么是原生APP,什么是web APP?今日将为大家讲解一下两者的区别以及优劣势。

现在APP研发有两个主流的方向:原生App及Web App。那麽你是否知道这两者有何区别?什么是原生APP,什么是web APP?今日将为大家讲解一下两者的区别以及优劣势。
原生APP
在智能手机上运行的App应用程序有NativeAPP(基于本地操作系统运行)与Web APP(基于手机浏览器运行),这里面Native App便是原生App的意思,于是原生App开发同样便是指基于本地操作系统的App开发服务。
现在APP研发有两个主流的方向:原生App及Web App。那麽你是否知道这两者有何区别?什么是原生APP,什么是web APP?今日将为大家讲解一下两者的区别以及优劣势。
原生APP
在智能手机上运行的App应用程序有NativeAPP(基于本地操作系统运行)与Web APP(基于手机浏览器运行),这里面Native App便是原生App的意思,于是原生App开发同样便是指基于本地操作系统的App开发服务。
原生APP: 访问与兼容性相对比较好,能够支持在线或许离线消息推送,实现本地资源访问,乃至摄像、拨号、蓝牙、功能的调取。原生APP开发有许多的优点,像原生APP就是针对不一样的平台替用户提供不一样的体验,原生应用能够节约宽带费用、访问本地资源、运行速度快,提供最好的用户体验。
使用JAVA(android)SDK进行开,开发费用高、开发速度慢、维护费用高,不适合MES系统的开发需求

Web App:Web APP能够类比在电脑上的网页。Web APP很多就是页面展示类的APP。只可以使用有限的移动硬件设备功能。很多用来页面展示,侧重在简单的交互,没办法使用很多硬件设备独特的功能。
通过移动设备上的浏览器访问,软件更新只须要更新服务器就够了,用户层面不须要做一切操作。我们的WEBAPP既可通过浏览器访问,也可通过APP访问,2个效果其实是一样的.
MES需求就是展示和下单及拍照需求,H5完全可以满足需求

在这里插入图片描述

(二)、用VUE来制作 H5手机端网页
经过上面讲解WEBAPP其实就是手机版的网站,制作方法与MES是一样的,只是在界面上面更适合手机观看. H5制作过程就不说了,同上边是一样的,大家可以直接看效果
在这里插入图片描述

获取数据,并实现下单与显示
(三)、把网页部署到服务器,实现URL远程访问
通过 NGINX 服务 并绑定域名,我们可以让有网的地方 就可以访问 我们的 H5!

简化部署:使用BT面板来进行服务器安装
在这里插入图片描述

(四)、通过 Hbuild 打包 webApp
通过 HB 建立的 WEB-VIEW 项目可以轻松把H5网页打包成 APP
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值