热门IT资讯网

go操作mysql数据库的方法介绍

发表于:2024-11-27 作者:热门IT资讯网编辑
编辑最后更新 2024年11月27日,这篇文章主要为大家详细介绍了go操作mysql数据库的方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。Go(又称Golang)是Google开发的一种静态强类型、编

这篇文章主要为大家详细介绍了go操作mysql数据库的方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。

Go(又称Golang)是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。下面就来由go入门教程栏目介绍一些关于mysql的操作。

go操作mysql数据库,用的库是 go-sql-driver/mysql,安装直接go get

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

sql.DB

DB类型可用的函数有:

1、Query(c string, args interface{} …) (*Rows, error),常用于SELECT语句

2、Exec(c string, args interface{} …) (*Rows, error),常用与UPDATE和INSERT

3、Prepare(c string) (*Stmt, error),其他语句,也可以用于执行上述语句,返回Stmt指针

sql.Stmt

Stmt是准备好的语句,可以执行数据库语句操作,常用函数有:

Exec(args interface{} …) (Result, error),给定参数并执行准备好的语句,然后返回语句的总结果

//...        stmt, err := db.Perpare("INSERT INTO User(user,pwd) VALUES (?, ?)")        if err != nil {                panic(err)        }        defer stmt.Close()        _, err := stmt.Exec("laoli", "123456")        if err != nil {                panic(err)        }//...//...        stmt, err := db.Perpare("DELETE FROM User")        if err != nil {                panic(err)        }        defer stmt.Close()        _, err := stmt.Exec()        if err != nil {                panic(err)        }

Query(args interface{} …) (*Rows, error),给定参数并执行准备好的语句,返回行结果,比方说SELECT操作就必须用这个函数调用。

sql.Rows

Rows是sql语句执行返回的表,Rows会占用缓存,Rows.Next()里,如果返回false,则会自动释放缓存。
看一下源码:

// 源码func (rs *Rows) Next() bool {        var doClose, ok bool        withLock(rs.closemu.RLocker(), func() {                doClose, ok = rs.nextLocked()        })        if doClose {                rs.Close() //在这里释放掉了        }        return ok}

例子:

package mainimport (        "database/sql"        _ "github.com/go-sql-driver/mysql")var db *sql.DBfunc mian() {        db = sql.Open("mysql", "root:123456@tcp(127.0.0.1)/test")        if err := db.Ping(); err != nil {                panic(err)        }}func Insert() {        _, err := db.Exec("INSERT INTO User(user, pwd) VALUE (?, ?)", "laowang", "123456")        if err != nil {                panic(err)        }}func SelectRow() {        rows, err := db.Query("SELECT * FROM User WHERE user=?", "laowang")        if err != nil {                panic(err)        }        //defer rows.Close() //如果后面代码没有循环调用rows.Next(),就需要手动在这里释放一下,不然会一直占用缓存        var user string        var pwd string        for rows.Next() {                row.Scan(&user, &pwd)        }        print(user, pwd)}

关于go操作mysql数据库的方法就分享到这里了,当然并不止以上和大家分析的办法,不过小编可以保证其准确性是绝对没问题的。希望以上内容可以对大家有一定的参考价值,可以学以致用。如果喜欢本篇文章,不妨把它分享出去让更多的人看到。

0