gpt4 book ai didi

mysql - 如何在 GoLang 中的不同处理程序上全局共享 MySQL 驱动程序

转载 作者:IT王子 更新时间:2023-10-29 02:22:30 24 4
gpt4 key购买 nike

我想从不同的处理程序调用数据库,这是我的 mysql.go:包通用

import (
"database/sql"
"fmt"

_ "github.com/go-sql-driver/mysql"
)

var db *sql.DB
var err error

//db connection
func connectDB() {
db, err = sql.Open("mysql", "root@tcp(localhost:3306)/mysqlapi")
if err != nil {
fmt.Println(err.Error())
}
defer db.Close()

//test connection
err = db.Ping()
if err != nil {
fmt.Println(err.Error())
}

//table migration
stmt, err := db.Prepare("CREATE TABLE person (id int NOT NULL AUTO_INCREMENT, first_name varchar(40), last_name varchar(40), PRIMARY KEY (id));")
if err != nil {
fmt.Println(err.Error())
}
_, err = stmt.Exec()
if err != nil {
fmt.Println(err.Error())
} else {
fmt.Println("Person Table successfully migrated....")
}

}

这是我想做的,但我不知道如何将 db 从通用包调用到不同的包中(我试过 common.db 但它不起作用):

封装模型

import (
"github.com/colombia9503/RESTful-Mysql/common"
)

type User struct {
Id int
First_Name string
Last_Name string
}

var Users = new(users)

type users struct{}

func (users) SelectAll() ([]*User, error) {
var users []*User
rows, err := common.db.Query("select id, first_name, last_name from person;")
if err != nil {
panic(err)
}

for rows.Next() {
some code..
}
return users, err
}

func (users) SelectOne(id string) (*User, error) {
some code..
}

func (users) Insert(name, last_name string) (*User, error) {
some code..
}

func (users) Update(id, name, last_name string) error {
some code..
}

func (users) Delete(id string) error {
some code..
}

最佳答案

你需要像这样写你的数据库变量:

package common

import (
"database/sql"
"fmt"

_ "github.com/go-sql-driver/mysql"
)

var Db *sql.DB
var Err error

在Golang Capital 中,字母表示将其导出到包外。您可以了解更多相关信息here

关于mysql - 如何在 GoLang 中的不同处理程序上全局共享 MySQL 驱动程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41579222/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com