go 访问数据库mysql基础

数据结构定义

type User struct {
	ID   int64          `db:"ID"`
	Name sql.NullString `db:"name"`
	Age  int            `db:"age"`
}

为了简便说明问题,假定了一个user表,有ID,Name 和Age 三个字段,Name是可以为空的

初始化数据库连接

func initDb() error {
   var err error
   dsn := "root:root@tcp(127.0.0.1:3306)/test"
   DB, err = sqlx.Open("mysql", dsn)
   if err != nil {
   	return err
   }
   DB.SetMaxOpenConns(100)
   DB.SetMaxIdleConns(16)
   return nil
}

其中:
SetMaxOpenConns用于设置最大打开的连接数,如果想设为不限制,设置为0就行。
SetMaxIdleConns用于设置空闲的连接数。

获取数据

	sqlstr := "select ID,name,age from user where ID = ?"  
	var user User
 
	err := DB.Get(&user, sqlstr, 1)
	if err != nil {
		fmt.Printf("select failed, err:%v\n", err)
		return
}

非常方便,连接后直接写入岛数据结构中。

代码展示

import (
   "database/sql"
   "fmt"
	_ "github.com/go-sql-driver/mysql"
   "github.com/jmoiron/sqlx"
)

var DB *sqlx.DB

func initDb() error {
   var err error
   dsn := "root:root@tcp(127.0.0.1:3306)/test"
   DB, err = sqlx.Open("mysql", dsn)
   if err != nil {
   	return err
   }
   DB.SetMaxOpenConns(100)
   DB.SetMaxIdleConns(16)
   return nil
}

type User struct {
   ID   int64          `db:"ID"`
   Name sql.NullString `db:"name"`
   Age  int            `db:"age"`
}

func testSqlxQuery() {
   sqlstr := "select ID,name,age from user where ID = ?"  
   var user User

   err := DB.Get(&user, sqlstr, 1)
   if err != nil {
   	fmt.Printf("select failed, err:%v\n", err)
   	return
   }

   fmt.Printf("user:%#v\n", user)
}

func main() {
   err := initDb()
   if err != nil {
   	fmt.Printf("init db failed, err:%v\n", err)
   	return
   }
   testSqlxQuery()
}

可以看出go连接数据库,取得数据非常简单。这是一个简单的示例。

你可能感兴趣的:(go,go,mysql)