golang原生数据库的使用

废话不多说。直接上代码

package main/*** @Description* @Author * @Date 2022/8/28 14:39**/
import ("database/sql""fmt""github.com/gin-gonic/gin"_"github.com/go-sql-driver/mysql""net/http"
)
var slqDb *sql.DB
var sqlResoponse SqlResponse
func init(){//1打开数据库//loc=Local:Mysql的时区设置DB_TYPE:="mysql"DB_HOST:="localhost"DB_PORT:="3306"DB_USER:="root"DB_NAME:="go_db"DB_PASSWORD:="123456"sqlStr:=DB_USER+":"+DB_PASSWORD+"@tcp("+DB_HOST+":"+DB_PORT+")/"+DB_NAME+"?charset=utf8&parseTime=true&loc=Local"var err errorslqDb, err = sql.Open(DB_TYPE, sqlStr)if err!=nil{fmt.Println("数据库打开出现了问题:",err)return}//2测试与数据库建立的连接(检验连接是否正确)err =slqDb.Ping()if err!=nil{fmt.Println("数据库连接出现了问题:",err)return}
}//Client提交的数据
type SqlUser struct {Name string `json:"name"`Age int `json:"age"`Address string `json:"address"`}//应答体(响应客户端的请求 )
type SqlResponse struct {Code int `json:"code"`Message string `json:"message"`Data interface{} `json:"data"`
}func main() {r := gin.Default()r.POST("sql/insert",insertData)//添加数据r.GET("sql/get",getData)//单条记录r.GET("sql/mulget",getMulData)//单条记录r.PUT("sql/update",updateData)//更新数据r.DELETE("sql/delete",deleteData)r.Run(":9090")
}
func  deleteData(c*gin.Context)  {name:=c.Query("name")var count int//1.先查询sqlStr:="select count(*) from user where name=?"err := slqDb.QueryRow(sqlStr, name).Scan(&count)if count<=0||err!=nil{sqlResoponse.Code=http.StatusBadRequestsqlResoponse.Message="删除的数据不存在"sqlResoponse.Data="error"c.JSON(http.StatusBadRequest,sqlResoponse)return}//2再删除delStr:="delete from user where name=?"ret,err:=slqDb.Exec(delStr,name)if err!=nil{sqlResoponse.Code=http.StatusBadRequestsqlResoponse.Message="删除失败"sqlResoponse.Data="error"c.JSON(http.StatusBadRequest,sqlResoponse)return}sqlResoponse.Code=http.StatusOKsqlResoponse.Message="删除成功"sqlResoponse.Data="OK"c.JSON(http.StatusOK,sqlResoponse)fmt.Println(ret.LastInsertId())//打印结果}
func updateData(c*gin.Context)  {var u SqlUser//绑定err:=c.Bind(&u)if err!=nil{sqlResoponse.Code=http.StatusBadRequestsqlResoponse.Message="参数错误"sqlResoponse.Data="error"c.JSON(http.StatusBadRequest,sqlResoponse)return}sqlStr:="update user set age=? ,address=? where name=?"ret,err:=slqDb.Exec(sqlStr,u.Age,u.Address,u.Name)if err!=nil{fmt.Printf("update failed,err:%v\n",err)sqlResoponse.Code=http.StatusBadRequestsqlResoponse.Message="更新失败"sqlResoponse.Data="error"c.JSON(http.StatusBadRequest,sqlResoponse)return}sqlResoponse.Code=http.StatusOKsqlResoponse.Message="更新成功"sqlResoponse.Data="OK"c.JSON(http.StatusOK,sqlResoponse)fmt.Println(ret.LastInsertId())//打印结果}
func getMulData(c*gin.Context)  {address:=c.Query("address")sqlStr:="select name,age from user where address=?"rows,err:=slqDb.Query(sqlStr,address)if err!=nil{sqlResoponse.Code=http.StatusBadRequestsqlResoponse.Message="查询错误"sqlResoponse.Data="error"c.JSON(http.StatusOK,sqlResoponse)return}defer rows.Close()resUser:=make([]SqlUser,0)for rows.Next(){var userTmp SqlUserrows.Scan(&userTmp.Name,&userTmp.Age)userTmp.Address=addressresUser=append(resUser,userTmp)}sqlResoponse.Code=http.StatusOKsqlResoponse.Message="读取成功"sqlResoponse.Data=resUserc.JSON(http.StatusOK,sqlResoponse)}
func getData(c*gin.Context){name:=c.Query("name")sqlStr:="select age,address from user where name=?"var u SqlUsererr := slqDb.QueryRow(sqlStr, name).Scan(&u.Age, &u.Address)if err!=nil{sqlResoponse.Code=http.StatusBadRequestsqlResoponse.Message="查询错误"sqlResoponse.Data="error"c.JSON(http.StatusOK,sqlResoponse)return}u.Name=namesqlResoponse.Code=http.StatusOKsqlResoponse.Message="读取成功"sqlResoponse.Data=uc.JSON(http.StatusOK,sqlResoponse)
}
func insertData(c *gin.Context){var u SqlUser//绑定err:=c.Bind(&u)if err!=nil{sqlResoponse.Code=http.StatusBadRequestsqlResoponse.Message="参数错误"sqlResoponse.Data="error"c.JSON(http.StatusBadRequest,sqlResoponse)return}sqlStr:="insert into user(name,age,address) values (?,?,?)"result ,err := slqDb.Exec(sqlStr, u.Name, u.Age, u.Address)if err!=nil {fmt.Printf("insert failed,err:%v\n",err)sqlResoponse.Code=http.StatusBadRequestsqlResoponse.Message="写入失败"sqlResoponse.Data="error"c.JSON(http.StatusBadRequest,sqlResoponse)return}sqlResoponse.Code=http.StatusOKsqlResoponse.Message="写入成功"sqlResoponse.Data="Ok"c.JSON(http.StatusOK,sqlResoponse)fmt.Println(result.LastInsertId())//打印结果}

golang原生数据库的使用相关推荐

  1. Golang 原生实现简单爬虫

    了解爬虫基本原理,深入探索爬虫的更多玩法.现在爬虫的热度越来越高,有不少人抱着好奇心和兴趣来学习爬虫,有用 Python.Java.PHP 等等,如果你去网上问,学爬虫最好用什么语言?95% 的人会推 ...

  2. 前沿分享|阿里云数据库解决方案资深专家 李圣陶:云原生数据库解决方案 加速企业国产化升级

    简介: 本篇内容为2021云栖大会-企业级云原生数据库最佳实践论坛中,阿里云数据库解决方案资深专家 李圣陶关于"云原生数据库解决方案 加速企业国产化升级"的分享. 本文从几大视角来 ...

  3. 李飞飞演讲实录 | 云原生数据库2.0:一站式全链路数据管理与服务

    简介:5月29日阿里云开发者大会上,阿里巴巴集团副总裁.阿里云数据库产品事业部负责人李飞飞演讲实录. 一.浅谈云原生 (一)云原生,是未来使用云的标准方式 我认为云原生是未来使用云的标准方式,云计算资 ...

  4. 云原生数据库 2.0:一站式全链路数据管理与服务

    简介:5月29日,阿里云开发者大会上,阿里云数据库宣布「云原生数据库 2.0:一站式全链路数据管理与服务」的全新品牌理念及开源云原生数据库能力,首次从客户场景视角提出了一站式在线数据管理平台的理念. ...

  5. 2021阿里云开发者大会|【云原生数据库:一站式数据服务】分论坛即将开启

    简介:我们也诚邀您莅临[云原生数据库:一站式数据服务]分论坛与大家一起探讨云原生数据库的前沿技术与应用场景的最佳实践 2021阿里云开发者大会将于5月29日正式开启 阿里云资深技术专家.行业大咖 以及 ...

  6. 《斗罗大陆》引入阿里云云原生数据库 PolarDB 游戏体验更流畅

    简介:文章来源:游戏开发世界 4 月 30 日,记者采访获悉,新浪游戏重磅作品<斗罗大陆 2 绝世唐门>全面引入阿里云云原生数据库 PolarDB,助力游戏运维效率提升 6 倍,海量数据承 ...

  7. 重磅 | 激活数据价值 阿里云推出云原生数据库备份DBS新版本

    简介:11月18日,阿里云宣布推出云原生数据库备份DBS.DBS是阿里云提供的低成本.高可靠的云原生数据库备份平台.DBS提供无限容量的备份存储.秒级应急恢复和恢复演练,并借助秒级沙箱实例和备份数据查 ...

  8. 比MySQL快6倍 深度解析国内首个云原生数据库POLARDB的“王者荣耀”

    随着移动互联网.电子商务的高速发展,被使用最多的企业级开源数据系统MySQL面临着巨大挑战--为迎接"双11"的高并发要提前做好分库分表;用户不断激增要将读写分离才能应对每天上亿次 ...

  9. 云原生数据库_数据标签竞赛云原生地理空间冲刺

    云原生数据库 STAC specification is getting closer to the ver 1.0 milestone, and as such the first virtual ...

最新文章

  1. 盘点 IDEA2020.3 那些炫酷的插件,超级好用的那种
  2. pythonweb开发-PythonWeb开发教程(一),开发之前需要准备什么
  3. Ollydbg 常用快捷键
  4. LeetCode-二叉树-94. 二叉树的中序遍历
  5. 【转】SAP开关账期后台任务
  6. WinSCP实现Ubuntu与 Windows 文件共享方法
  7. js设置全局变量ajax中赋值
  8. mysql aes encrypt_mysql加密函数aes_encrypt()和aes_decrypt()使用教程
  9. 使用青云主机的GPU主机教程(不完整版)
  10. 中国兽医显微镜市场趋势报告、技术动态创新及市场预测
  11. 示波器1m和50欧姆示阻抗匹配_为什么示波器阻抗一般是1M欧或者50欧
  12. python可视化三维矩阵点
  13. coreldraw快速撤回_CorelDRAW操作技巧,教你CDR撤销操作方法与设置技巧
  14. Kali利用Redis未授权漏洞入侵服务器
  15. php 红包算法教程,php仿微信红包分配算法的实现方法
  16. 5.5 高斯型求积公式简历
  17. 荣誉系统排名是整个服务器,魔兽世界怀旧服pvp荣誉系统是什么-魔兽世界怀旧服pvp荣誉系统奖励有哪些_牛游戏网...
  18. 树形DP(HDOJ1011 2196 4003 5148 POJ2342)
  19. 程序猿面试题:为什么曹操能号令诸侯?
  20. git 删除分支和删除文件夹

热门文章

  1. Python学习之-分支语句
  2. 视频图像分析处理流程(完整版)
  3. linux下c语言按q退出_Linux入门所必备的Linux命令和C语言基础
  4. 个人作业二-软件案例分析
  5. Winform实现顺序批量填充的方法
  6. jsp页面获取服务器Ip地址
  7. 骁龙 820A 汽车系统级芯片的优越性
  8. 深度剖析——超融合架构应用与实践分享
  9. 知识付费音视频和直播播放器
  10. python修改个人信息代码,牛逼了,利用Python实现“天眼系统”,只要照片就能了解个人信息...