您当前的位置: 首页 >  sql

qianbo_insist

暂无认证

  • 0浏览

    0关注

    399博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

go 访问数据库mysql基础

qianbo_insist 发布时间:2021-07-18 17:33:05 ,浏览量:0

数据结构定义
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连接数据库,取得数据非常简单。这是一个简单的示例。

关注
打赏
1663161521
查看更多评论
立即登录/注册

微信扫码登录

0.0385s