dow98764 2016-03-16 00:02
浏览 150
已采纳

通过结构包装的sql.DB无法调用实例中的方法

My goal is using a struct to wrap sql.DB to do something more than sql.DB. The instance I create can't work and give me this error when I run it.

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

My code is:

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
}

I am trying to create an instance and invoke sql.DB method.

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

The error message is pointed here.

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

(Personal background: I am newbie for 2 weeks)

  • 写回答

1条回答 默认 最新

  • donglu3184 2016-03-16 01:51
    关注

    The function Prepare starts with a capital letter ;)

    So you should have:

    getNodeRecord, err := dbConn.db.Prepare(dbQuery)
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥20 测距传感器数据手册i2c
  • ¥15 RPA正常跑,cmd输入cookies跑不出来
  • ¥15 求帮我调试一下freefem代码
  • ¥15 matlab代码解决,怎么运行
  • ¥15 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
  • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法