• 技术文章 >后端开发 >Golang

    Go语言中操作MySQL数据库的方法

    尚2020-02-15 15:06:20转载2612
    Go语言是一个开源的编程语言,它能让构造简单、可靠且高效的软件变得容易。go语言教程栏目就来为大家介绍一下go语言中操作MySQL数据库的方法。

    Go语言操作MySQL数据库:

    安装go操作MySQL的驱动

    go get -u -v github.com/go-sql-driver/mysql

    go操作MySQL数据库

    导包

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

    程序在操作数据库的时候只需要用到database/sql,而不需要直接使用数据库驱动,所以程序在导入数据库驱动的时候将这个包的名字设置成下划线。

    连接数据库,用sql.Open()方法,open()方法的第一个参数是驱动名称,第二个参数是连接字符串,格式为:用户名:密码@tcp(ip:port)/数据库名称?编码方式,返回值是连接对象和错误信息,例如:

    conn,err := sql.Open("mysql","root:123456@tcp(127.0.0.1:3306)/test?charset=utf8")
    defer conn.Close()//随手关闭数据库是个好习惯

    执行数据库操作。

    数据库的主要方法有:

    Query 执行数据库的查询操作,例如一个Select语句,返回数据类型为*Rows

    QueryRow 执行数据库至多返回一条数据,返回数据类型为*Row

    Exec 执行数不返回任何rows的据库语句,例如delete操作

    PrePare 准备一个数据库query操作,返回一个*Stmt,用于后续query或Exec。这个Stmt可以被多次执行,或者并发执行

    创建表

    exec函数如下:

    func (db *DB) Exec(query string, args ...interface{}) (Result, error)

    创建表的方法也是Exec(),参数是SQL语句,返回值是结果集和错误信息.

    其中result包含的内容有:

    type Result interface {
    	LastInsertId() (int64, error)
    	RowsAffected() (int64, error)
    }

    RowsAffected() 函数,可以获得成功执行SQL后对数据库所影响的行数。

    res ,err:= conn.Exec("create table user(name VARCHAR(40),pwd VARCHAR(40))")
    beego.Info("create table result=",res.,err)

    增删改操作

    执行增删改操作语句的是Exec(),参数是SQL语句,返回值是结果集和错误信息,通过对结果集的判断,得到执行结果的信息。以插入数据为例代码如下:

    res,_:=stmt.Exec("insert user(name,pwd) values (?,?)","tony","tony")
    count,_:=res.RowsAffected()
    this.Ctx.WriteString(strconv.Itoa(int(count)))

    查询操作

    用的函数是Query()和QueryRow.

    func (db *DB) QueryRow(query string, args ...interface{}) *Row
    func (db *DB) Query(query string, args ...interface{}) (*Rows, error)

    利用QueryRow实现单行查询,能确定该SQL语句的查询结果为一条记录。将结果中的字段值使用Scan()函数依次提取。

    利用Query实现多行数据查询,返回值为查询结果集和错误信息。通过next和Scan函数一起将数据取出来

    代码如下:

    单行查询:

    row:= conn.QueryRow(`select * from user where userName = "wyj"`)
    var name,pwd string
    row.Scan(&name,&pwd)
    beego.Info(name,"------",pwd)

    多行查询:

    data ,err :=conn.Query("SELECT name from user")
    	var userName string
    	if err == nil{
    		for data.Next(){
    			data.Scan(&userName)
    			beego.Info(userName)
    		}
    	}

    全部代码

    //连接数据库
    conn,err := sql.Open("mysql","root:123456@tcp(127.0.0.1:3306)/testtest?charset=utf8")
    	if err != nil{
    		beego.Info("链接失败")
    	}
    	defer conn.Close()
    //建表
    	res ,err:= conn.Exec("create table user(userName VARCHAR(40),passwd VARCHAR(40))")
    	beego.Info("create table result=",res,err)
    //插入数据
        res,err =conn.Exec("insert user(userName,passwd) values(?,?)","itcast","heima")
    	beego.Info(res,err)
    //单行查询
    	row:= conn.QueryRow(`select * from user where userName = "wyj"`)
    	var name,pwd string
    	row.Scan(&name,&pwd)
    	beego.Info(name,"------",pwd)
    //多行查询
    	data ,err :=conn.Query("SELECT userName from user")
    	var userName string
    	if err == nil{
    		for data.Next(){
    			data.Scan(&userName)
    			beego.Error(userName)
    		}
    	}

    更多go语言知识请关注php中文网go语言教程栏目。

    以上就是Go语言中操作MySQL数据库的方法的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:csdn,如有侵犯,请联系admin@php.cn删除
    专题推荐:Go语言 MySQL
    上一篇:golang怎么搭一个网站 下一篇:golang找不到package怎么办
    PHP编程就业班

    相关文章推荐

    • golang 如何部署到服务器?• vscode如何编译运行go语言• vscode安装go插件后不可用• golang如何判断目录是否存在

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网