LAPP 打印服务 支持条码打印和表单打印 通过Socket或windows打印方式
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

90 lines
2.0 KiB

package db
import (
"context"
"database/sql"
_ "github.com/denisenkom/go-mssqldb"
"github.com/go-xorm/xorm"
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options"
"LAPP_PRN_Service/glog"
"log"
"sync"
"time"
)
type DB_CONFIG struct {
Server string `json:"server"`
Userid string `json:"userid"`
Password string `json:"password"`
Database string `json:"database"`
Port int `json:"port"`
}
//定义常量,工厂号
const PlantNr = 100
//mongoDb数据库名称
const DbName = "logDb"
var (
G_DbEngine *xorm.Engine
G_SqlDbRawEngine *sql.DB
mgoDb *mongo.Client
mlock sync.Mutex
)
// 获取MSSQL原生连接
func InitMssqlRawDb(connString string) (err error) {
if G_SqlDbRawEngine, err = sql.Open("sqlserver", connString); err != nil {
log.Printf("数据库引擎无法创建: %s, 错误原因: %v", connString, err)
return
}
return
}
// 获取MSSQL的XORM连接
func InitMssqlDb(connString string) (err error) {
if G_DbEngine, err = xorm.NewEngine("mssql", connString); err != nil {
log.Println("数据库引擎无法创建: ", err.Error())
return
}
G_DbEngine.SetMaxIdleConns(100)
G_DbEngine.SetMaxOpenConns(100)
if err = G_DbEngine.Ping(); err != nil {
log.Println("数据库连接失败:", connString, err.Error())
return
} else {
log.Println("数据库连接成功:", connString)
}
//开启debug
//G_DbEngine.ShowSQL(true)
return
}
//创建mongoDb数据库链接
func MgoDb() *mongo.Client {
//判断mgoDb是否存在
if mgoDb != nil {
return mgoDb
}
//创建之前会涉及并发,所以要加锁
mlock.Lock()
defer mlock.Unlock()
//细节,防止多个请求锁住
if mgoDb != nil {
return mgoDb
}
//1.建立链接
ctx, _ := context.WithTimeout(context.Background(), 10*time.Second)
client, err := mongo.Connect(ctx, options.Client().ApplyURI("mongodb://localhost:27017"))
if err != nil {
glog.Infoln("初始化数据库", "MgoDb return fail", err)
return nil
} else {
mgoDb = client
return mgoDb
}
}