本文摘自php中文网,作者尚,侵删。
Go(又称Golang)是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。下面就来由go入门教程栏目介绍一些关于mysql的操作。
go操作mysql数据库,用的库是 go-sql-driver/mysql,安装直接go get
1 | 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),给定参数并执行准备好的语句,然后返回语句的总结果
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | 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,则会自动释放缓存。
看一下源码:
1 2 3 4 5 6 7 8 9 10 11 | func (rs *Rows) Next() bool {
var doClose, ok bool
withLock(rs.closemu.RLocker(), func() {
doClose, ok = rs.nextLocked()
})
if doClose {
rs.Close()
}
return ok
}
|
例子:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | package main
import (
"database/sql"
_ "github.com/go-sql-driver/mysql"
)
var db *sql.DB
func 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)
}
var user string
var pwd string
for rows.Next() {
row.Scan(&user, &pwd)
}
print (user, pwd)
}
|
更多go语言知识请关注php中文网go语言教程栏目。
以上就是golang mysql操作介绍的详细内容,更多文章请关注木庄网络博客!!
相关阅读 >>
golang反射机制
【golang语言社区】源码篇--sync包map
golang sleep为什么没有返回值
golang 创建守护进程以及平滑重启
常见的 go 处理字符串的技巧
golang里的变量问题
go那些事儿|go反射使用第二弹(valueof)
go-carbon1.2.4发布了!新增系列时间比较方法
go中sync.mutex源码解读
golang和go是一样的吗
更多相关阅读请进入《golang》频道 >>
老貘
一个与时俱进的Go编程知识库。
转载请注明出处:木庄网络博客 » golang mysql操作介绍