【发布时间】:2016-03-15 16:52:24
【问题描述】:
我的文件结构如下:
models/db.go
type DB struct {
*sql.DB
}
var db *DB
func init() {
dbinfo := fmt.Sprintf("user=%s password=%s dbname=%s sslmode=disable",
DB_USER, DB_PASSWORD, DB_NAME)
db, err := NewDB(dbinfo)
checkErr(err)
rows, err := db.Query("SELECT * FROM profile")
checkErr(err)
fmt.Println(rows)
}
func NewDB(dataSourceName string) (*DB, error) {
db, err := sql.Open("postgres", dataSourceName)
if err != nil {
return nil, err
}
if err = db.Ping(); err != nil {
return nil, err
}
return &DB{db}, nil
}
models/db_util.go
func (p *Profile) InsertProfile() {
if db != nil {
_, err := db.Exec(...)
checkErr(err)
} else {
fmt.Println("DB object is NULL")
}
}
当我尝试在InsertProfile 函数中访问db 时,它显示NULL ptr exception。如何访问db_utils.go 中的db?
我不想将db 大写(因为它会提供对所有包的访问权限)。
我得到了从db 中的init() 正确返回的QUERY。
【问题讨论】:
标签: pointers go database-connection nullreferenceexception