您现在的位置是:首页 > 缘文分享缘文分享

Go语言连接MYSQL数据库

2020-11-10【缘文分享】人已围观

简介缘文分享:内心如果平静,外在就不会有风波。

  最近闲余时间接触了一点GO,真不知道它好用在哪,在Go语言中没有类(Class)的概念,然而编程又离不开面向对象,于是GO说我没有类的概念,但我也能实现面向对象编程。在Go中使用结构体(Structs)对属性进行封装,结构体就像是类的一种简化形式。然后再在Go中定义一些方法并且作用在接收者(receiver)上的一个函数,简单描述就是GO中没有类的概念,但你可以定义一个Struct结构,当作类。这个结构中的属性当做类的属性,然后单独定义一些方法挂载到这个结构上,模拟出了一个类。但感觉还是挺别扭的。
而在使用GO语言连接数据库查询数据时,又感觉到好繁琐。连接MYSQL查出数据,然后使用GO进行循环迭代都不是一个容易的事,实现如下:
 

#GO中的控制器
package controllers
import (
	"database/sql"
	"fmt"
	"github.com/astaxie/beego"
	_ "github.com/go-sql-driver/mysql"
)

type MainController struct {
	beego.Controller
}

#连接MYSQL读取数据
func (c *MainController) Get() {
    #连接MYSQL
	db, err := sql.Open("mysql", "test:test@tcp(10.15.80.74:3307)/database_name?charset=utf8")
    #查询数据库
	rows, _ := db.Query("SELECT id,title,updateTime FROM article")

    #第一种方式把数据处理好用的二维map
	cols, _ := rows.Columns()
	vals := make([][]byte, len(cols))
	scans := make([]interface{}, len(cols))
	for k, _ := range vals {
		scans[k] = &vals[k]
	}

	i := 0
	result := make(map[int]map[string]string)
	for rows.Next() {
		rows.Scan(scans...)
		row := make(map[string]string)
		for k, v := range vals {
			key := cols[k]
			row[key] = string(v)
		}
		result[i] = row
		i++
	}
    fmt.Println(result)
	
    #第二种方式直接scan数据中的字段,但字段必须一一对应,不能疏漏。
	id := 0
	title := ""
	updateTime := 0
	var enterprise []type = make([]type, 15)
	for rows.Next() {
	 	rows.Scan(&id, &title, &updateTime)
	 	fmt.Println(id, title, updateTime)
	}

	db.Close()
}


 

Tags:Go语言连接MYSQL数据库

很赞哦! ()

文章评论

    共有条评论来说两句吧...

    用户名:

    验证码:

站点信息

  • 建站时间:2019-05-15
  • 文章统计238篇文章
  • 标签管理标签云
  • 统计数据百度统计
  • 公众号:资源连接