前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Go语言读写数据库

Go语言读写数据库

作者头像
李海彬
发布2018-03-23 17:01:45
1.9K0
发布2018-03-23 17:01:45
举报
文章被收录于专栏:Golang语言社区Golang语言社区

我用的驱动是:https://github.com/Go-SQL-Driver/MySQL

理由跟 https://github.com/astaxie/build-web-application-with-golang/blob/master/05.2.md 的一样。

  • 比较新,更新维护的比较好;
  • 完全支持database/sql接口
  • 支持keepalive,保持长连接。

安装

代码语言:javascript
复制
$ go get github.com/go-sql-driver/mysql

数据库连接语句

代码语言:javascript
复制
import "database/sql"
import _ "github.com/go-sql-driver/mysql" 
db, e := sql.Open("mysql", "user:password@/dbname?charset=utf8")

代码例子:来自 https://github.com/astaxie/build-web-application-with-golang/blob/master/05.2.md

使用的数据表:

CREATE TABLE `userinfo` ( `uid` int(10) NOT NULL AUTO_INCREMENT, `username` varchar(64) DEFAULT NULL, `departname` varchar(64) DEFAULT NULL, `created` date DEFAULT NULL, PRIMARY KEY (`uid`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=8 ;

代码:

代码语言:javascript
复制
package main

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

func main(){
    db,err:=sql.Open("mysql","root:root@tcp(localhost:8889)/ghj1976test?charset=utf8")
    checkErr(err)

    //插入数据
    stmt,err:=db.Prepare("INSERT userinfo SET username=?,departname=?,created=?")
    checkErr(err)

    res,err:=stmt.Exec("ghj1976","RD部门","2013-03-18")
    checkErr(err)

    res,err=stmt.Exec("astaxie","RD部门","2012-12-09")
    checkErr(err)

    id,err:=res.LastInsertId()
    checkErr(err)

    fmt.Println(id)

    //修改数据
    stmt,err=db.Prepare("update user info set username=? where uid=?")
    checkErr(err)

    res,err=stmt.Exec("astaxieupdate",id)
    checkErr(err)

    affect,err:=res.RowsAffected()
    checkErr(err)

    fmt.Println(affect)

    //搜索数据
    rows,err:=db.Query("SELECT * FROM userinfo")
    checkErr(err)

    for rows.Next(){
        var uid int
        var username string
        var department string
        var created string
        err=rows.Scan(&uid,&username,&department,&created)
        checkErr(err)
        fmt.Println(uid)
        fmt.Println(username)
        fmt.Println(department)
        fmt.Println(created)
    }

    //删除数据
    stmt,err=db.Prepare("delete from user info where uid=?")
    checkErr(err)

    res,err=stmt.Exec(id)
    checkErr(err)

    affect,err=res.RowsAffected()
    checkErr(err)

    fmt.Println(affect) 
    db.Close()
}

func checkErr(err error){
    if err!=nil{
        panic(err)
    }
}

db.Prepare()函数用来返回准备要执行的sql操作,然后返回准备完毕的执行状态。 db.Query()函数用来直接执行Sql返回Rows结果。 stmt.Exec()函数用来执行stmt准备好的SQL语句

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-01-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Golang语言社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档