java与数据库连接的包_与包共享数据库连接

我是golang的新手 . 我正在尝试在我的包中共享mysql数据库连接,后者可能在几个包中 . 要跳过在我创建数据库包的每个包中定义数据库连接,现在我正在尝试获取该包,连接到db并在整个包中使用该对象 .

我正在使用这个mysql插件:github.com/go-sql-driver/mysql

这是我的代码:

main.go

package main

import (

"log"

"./packages/db" // this is my custom database package

"database/sql"

_ "github.com/go-sql-driver/mysql"

)

var dbType Database.DatabaseType

var db *sql.DB

func main() {

log.Printf("-- entering main...")

dbType := Database.New()

db = dbType.GetDb()

dbType.DbConnect()

delete_test_data()

dbType.DbClose()

}

func delete_test_data(){

log.Printf("-- entering delete_test_data...")

//db.Exec("DELETE FROM test;")

}

包/ DB / db.go

package Database

import (

"log"

"database/sql"

_ "github.com/go-sql-driver/mysql"

)

type DatabaseType struct {

DatabaseObject *sql.DB

}

func New()(d *DatabaseType) {

d = new(DatabaseType)

//db.DatabaseObject = db.DbConnect()

return d

}

func (d *DatabaseType) DbConnect() *DatabaseType{

log.Printf("-- entering DbConnect...")

var err error

if d.DatabaseObject == nil {

log.Printf("--------- > Database IS NIL...")

d.DatabaseObject, err = sql.Open("mysql", "...")

if err != nil {

panic(err.Error())

}

err = d.DatabaseObject.Ping()

if err != nil {

panic(err.Error())

}

}

return d

}

func (d *DatabaseType) DbClose(){

log.Printf("-- entering DbClose...")

defer d.DatabaseObject.Close()

}

func (d *DatabaseType) GetDb() *sql.DB{

return d.DatabaseObject

}

一切都没问题,直到我取消注释这一行:

db.Exec("DELETE FROM test;")

有人能告诉我共享数据库连接的正确方法是什么?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值