Является ли хорошей идеей инициализировать databaze как глобальную переменную? Может ли это работать?Инициализировать базу данных как глобальную переменную
Я думаю о чем-то вроде этого:
func MustDB(d *sql.DB, err error) *sql.DB {
if err != nil {
log.Panic(err)
}
return d
}
// what I don't know - is how to call db.Close()
// username and password can also be read similar way
var db *DB = MustDB(db.Open(...))
func MustPrepare(db *sql.DB, query string) *sql.Stmt {
res, err := sql.Prepare(db, query)
if err!=nil {
log.Panic(err)
}
return ret;
}
Преимущество заключается в том, что я могу просто создать подготовленные операторы SQL, как глобальные переменные. Мне не нужно создавать и управлять хранилищем, где будут добавлены все команды sql. Только я пишу:
var s1 *sql.Stmt = MustPrepare(db, "SELECT * FROM MyTable")
var s2 *sql.Stmt = MustPrepare(db, "INSERT INTO MyTable(col1, col2) VALUES(?,?)")
var s3 *sql.Stmt = MustPrepare(db, "DELETE FROM MyTable WHERE col1=?")
Как вы думаете, этот шаблон полезен, или он не может работать вообще.
Неверно, поскольку db.Open не открывает соединение с базой данных, но создает пул соединений. Вы не должны открывать и закрывать все это время. Я управляю подключениями для вас. – 0x434D53