• 三狮军团首秀 只有两千多球迷观战 2019-05-19
  • 人民网2017呼和浩特徒步迎新活动--内蒙古频道--人民网 2019-05-19
  • 【品牌资讯】环球网斩获“全国行业新闻网站传播力2017年6月榜”多项冠军 2019-05-15
  • 深化对经济工作主线的认识 从供需关系看供给侧结构性改革 2019-05-15
  • 格拉斯哥艺术学院起火 4年前曾遭火灾仍在整修 2019-05-14
  • 回复@地瓜干17世:猪临死才会嚎叫呢~ 2019-05-14
  • 婺源古村溪中发现鹰嘴龟 2019-05-08
  • 编辑评测:高夫净源控油平衡露 极速补水长效控油 2019-05-08
  • 四部门发文规范特色小镇建设防止“新瓶装旧酒” 2019-05-02
  • 【地球的盛会文明的聚会艺术的盛宴四海一家足球为人类和平幸福而荣耀!!!普京是当今人类世界最优秀的一代伟人俄罗斯赢啦!!!】 2019-04-29
  • 学习新思想,千万师生同上一堂课 2019-04-28
  • 你这种个体户都干不了的老蚕也配谈计划?真是笑死人不偿命哦? 2019-04-23
  • 感人!的哥带着患病父亲出车 孝心感动乘客 2019-04-23
  • 图解:习近平在纪念马克思诞辰200周年大会上讲话的16个金句 2019-04-16
  • 感触名家笔下的端午文化 吃香粽原来可以这样"文艺" 2019-04-16
  • 十一选五任一中奖多钱:Golang中如何对MySQL进行操作详解

    山西体彩11选5直选遗漏 www.caxru.com  更新时间:2019年03月10日 09:00:22   作者:灯风罩戟   我要评论

    这篇文章主要给大家介绍了关于在Golang中如何对MySQL进行操作的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者使用Golang具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧

    前言

    Golang官方并没有提供数据库驱动,但通过database/sql/driver包来提供了实现驱动的标准接口??梢栽贕ithub上找到很多开源的驱动。

    其中go-sql-driver/mysql是一个比较推荐的驱动,其完全支持database/sql接口。

    使用这个驱动, 在项目里import进:

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

    在正式使用database/sql包之前,首先得明白sql.DB并不代表一个数据库连接,它并不会与数据库建立任何连接,也不会验证参数的合法性,要想知道DSN的合法性,需使用sql.DB实例(比如db)db.Ping() 方法, 如下:

    err = db.Ping()
    if err != nil {
     // 错误处理
    }

    使用sql.Open()方法即可获得一个sql.DB实例。需要注意的是,sql.DB的设计就是用来作为长连接使用的,不应该在项目里频繁的进行Open()与Close(),提倡的做法是声明一个全局的sql.DB实例, 将其复用起来。即只Open()一次,使用直到程序结束任务。

    拿到sql.DB实例之后,就可以对数据库进行操作了。

    在操作数据库时,推荐做法是使用db.Prepare()对SQL语句进行预编译,这样具有较高的安全性,可在一定程度上避免诸如SQL注入这样的攻击手段。

    一些示例:

    /*
     查询操作
    */
    stmt, err := db.Prepare("SELECT `user_name` FROM `users` WHERE `id` = ?")
    defer stmt.Close()
    if err != nil {
     //错误处理
    }
    var userName string
    //Scan() 将结果复制到userName
    err = stmt.QueryRow(1).Scan(&userName)
    
    fmt.Println(userName)
    
    /*
     多行结果
    */
    stmt, err := db.Prepare("SELECT `user_name` FROM `users` WHERE `age` = ?")
    defer stmt.Close()
    if err != nil {
     //错误处理
    }
    
    rows, err := stmt.Query(年龄)
    if err != nil {
     //错误处理
    }
    
    for rows.Next() {
     var userName string
     if err := rows.Scan(&userName); err != nil {
      //错误处理
     }
    }
    /*
     插入操作
    */
    stmt, err := db.Prepare("INSERT INTO `users` (`user_name`, `age`) VALUES(?, ?)")
    defer stmt.Close()
    if err != nil {
     //错误处理
    }
    stmt.Exec("名字",年龄)
    /*
     事务
    */
    tx, err := db.Begin()
    if err != nil {
     //错误处理
    }
    defer tx.Rollback()
    
    stmt, err := db.Prepare("")
    defer stmt.Close()
    if err != nil {
     //错误处理
    }
    
    stmt.Exec()
    err = tx.Commit()
    if err != nil {
     //错误处理
    }

    总结

    以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。

    相关文章

    • GO语言make()分配用法实例

      GO语言make()分配用法实例

      这篇文章主要介绍了GO语言make()分配用法,实例分析了make()的功能及使用技巧,需要的朋友可以参考下
      2015-02-02
    • 阿里云go开发环境搭建过程

      阿里云go开发环境搭建过程

      这篇文章主要介绍了阿里云go开发环境搭建过程,非常不错,具有参考借鉴价值,需要的朋友可以参考下
      2018-02-02
    • 五步让你成为GO 语言高手

      五步让你成为GO 语言高手

      本文给大家介绍的这里是GO程序员的五个进化阶段,从最开始的菜逼到最终的布道者,附上各种示例,一步步走向大神之路,推荐给小伙伴们,有需要的朋友可以参考下
      2015-03-03
    • Mac上Go环境和VS Code的正确安装与配置方法

      Mac上Go环境和VS Code的正确安装与配置方法

      Go语言是一个新兴的语言。下面介绍一下如何在Mac系统下安装和使用这个语言,Go语言提供了mac下安装包,可直接下载安装包点击安装
      2018-03-03
    • golang实现LRU缓存淘汰算法的示例代码

      golang实现LRU缓存淘汰算法的示例代码

      这篇文章主要介绍了golang实现LRU缓存淘汰算法的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
      2018-12-12
    • Go语言MessageBox用法实例

      Go语言MessageBox用法实例

      这篇文章主要介绍了Go语言MessageBox用法,实例分析了MessageBox提示框的实现与使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
      2015-02-02
    • Go语言编程中字符串切割方法小结

      Go语言编程中字符串切割方法小结

      这篇文章主要介绍了Go语言编程中字符串切割方法小结,所整理的方法都来自字符串相关的strings包,需要的朋友可以参考下
      2015-10-10
    • 在Golang代码中如何自动生成版本号的方法示例

      在Golang代码中如何自动生成版本号的方法示例

      这篇文章主要给大家介绍了在Golang代码中如何自动生成版本号的相关资料,文中通过示例代码介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
      2017-07-07
    • golang针对map的判断,删除操作示例

      golang针对map的判断,删除操作示例

      这篇文章主要介绍了golang针对map的判断,删除操作,结合具体实例形式分析了Go语言map判断与删除相关操作技巧,需要的朋友可以参考下
      2017-03-03
    • 详解golang中bufio包的实现原理

      详解golang中bufio包的实现原理

      这篇文章主要介绍了详解golang中bufio包的实现原理,通过分析golang中bufio包的源码,来了解为什么bufio能够提高文件读写的效率和速度
      2018-01-01

    最新评论

  • 三狮军团首秀 只有两千多球迷观战 2019-05-19
  • 人民网2017呼和浩特徒步迎新活动--内蒙古频道--人民网 2019-05-19
  • 【品牌资讯】环球网斩获“全国行业新闻网站传播力2017年6月榜”多项冠军 2019-05-15
  • 深化对经济工作主线的认识 从供需关系看供给侧结构性改革 2019-05-15
  • 格拉斯哥艺术学院起火 4年前曾遭火灾仍在整修 2019-05-14
  • 回复@地瓜干17世:猪临死才会嚎叫呢~ 2019-05-14
  • 婺源古村溪中发现鹰嘴龟 2019-05-08
  • 编辑评测:高夫净源控油平衡露 极速补水长效控油 2019-05-08
  • 四部门发文规范特色小镇建设防止“新瓶装旧酒” 2019-05-02
  • 【地球的盛会文明的聚会艺术的盛宴四海一家足球为人类和平幸福而荣耀!!!普京是当今人类世界最优秀的一代伟人俄罗斯赢啦!!!】 2019-04-29
  • 学习新思想,千万师生同上一堂课 2019-04-28
  • 你这种个体户都干不了的老蚕也配谈计划?真是笑死人不偿命哦? 2019-04-23
  • 感人!的哥带着患病父亲出车 孝心感动乘客 2019-04-23
  • 图解:习近平在纪念马克思诞辰200周年大会上讲话的16个金句 2019-04-16
  • 感触名家笔下的端午文化 吃香粽原来可以这样"文艺" 2019-04-16
  • 排列三走势 上海时时乐选号技巧 时时彩信誉平台 广西快3开奖结果 新11选5 pk10五码二期必中技巧 双色球中奖规则 30选7走势图 20选5走势图 江苏新时时彩 北京赛车pk10开奖 体彩排列五 北京pk10赛车开奖结果 1十二生肖时时彩 生肖时时彩二次抽奖活动 甘肃快三出号规律