gpt4 book ai didi

go - 由结构包装的 sql.DB 无法在实例中调用方法

转载 作者:数据小太阳 更新时间:2023-10-29 03:15:55 24 4
gpt4 key购买 nike

我的目标是使用一个结构来包装 sql.DB 来做一些比 sql.DB 更重要的事情。我创建的实例无法运行,运行时出现此错误。

DbConn.db.prepare undefined (cannot refer to unexported field or method sql.(*DB)."".prepare)

我的代码是:

type DatabaseConn struct {
driverName string
databaseName string
userName string
password string
dataSourceName string
db *sql.DB
}

func (d DatabaseConn)Open() error {
d.driverName = DB_DRNAME
d.userName = DB_UNAME
d.password = DB_PWD
d.databaseName = DB_DBNAME
d.dataSourceName = fmt.Sprintf("%s:%s@/%s?charset=utf8",d.userName, d.password, d.databaseName)
db, err := sql.Open(d.driverName, d.dataSourceName)
return err
}


func (d *DatabaseConn)Close() error {
defer func() {
if err := recover(); err != nil {
fmt.Println("Trying to handle error in DatabaseConn.Close(): ", err)
}
}()

err := d.db.Close()
return err
}

我正在尝试创建一个实例并调用 sql.DB 方法。

var dbConn DatabaseConn
dbConn.Open()
defer dbConn.Close()
dbQuery := fmt.Sprintf("SELECT *, FROM ms_node WHERE node_id = ?")
getNodeRecord, err := dbConn.db.prepare(dbQuery)

错误信息指向这里。

./server.go:343: dbConn.db.prepare undefined (cannot refer to unexported field or method sql.(*DB)."".prepare)

(个人背景:本人新手2周)

最佳答案

函数Prepare以大写字母开头;)

所以你应该:

getNodeRecord, err := dbConn.db.Prepare(dbQuery)

关于go - 由结构包装的 sql.DB 无法在实例中调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36024512/

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