由 struct 包裹的 sql.DB 不能在实例中调用方法

    我的目标是使用结构来包装 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周)


哈士奇WWW
浏览 211回答 1
1回答

哔哔one

该函数Prepare以大写字母开头 ;)所以你应该有:getNodeRecord, err := dbConn.db.Prepare(dbQuery)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go