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 boolwithLock(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 stringvar pwd stringfor rows.Next() {row.Scan(&user, &pwd)}print(user, pwd)}

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

更多相关文章

  1. go语言中一些字符串操作介绍
  2. 学习Go 语言操作 MySQL 之 预处理
  3. php操作xml
  4. java对XML文件的解析、节点的增加、删除操作总结
  5. php操作xml入门之xml基本介绍及xml标签元素
  6. php操作xml入门之xml标签的属性分析
  7. php操作XML、读取数据和写入数据的实现代码
  8. java使用jaxb操作xml示例
  9. 解析php DOMElement 操作xml 文档的实现代码

随机推荐

  1. Android如何判断手机卡是SIM卡或者USIM卡
  2. 简单介绍Android应用特色及详解四大组件
  3. 什么在Android M中被弃用?
  4. Android 3.2 以上转屏,切换屏幕,横竖屏(onC
  5. Android-SurfaceView拍照录像
  6. ListView的上拉弹簧、下拉弹簧,下拉弹簧时
  7. arcgis for android 开发的导航的部分 请
  8. Android 如何清空 Canvas 清屏只需三句
  9. Android:创建常见对话框以及使用对话框实
  10. 4.腾讯微博Android客户端开发——获取未