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

  1. package db
  2. import (
  3. "context"
  4. "database/sql"
  5. _ "github.com/denisenkom/go-mssqldb"
  6. "github.com/go-xorm/xorm"
  7. "go.mongodb.org/mongo-driver/mongo"
  8. "go.mongodb.org/mongo-driver/mongo/options"
  9. "LAPP_PRN_Service/glog"
  10. "log"
  11. "sync"
  12. "time"
  13. )
  14. type DB_CONFIG struct {
  15. Server string `json:"server"`
  16. Userid string `json:"userid"`
  17. Password string `json:"password"`
  18. Database string `json:"database"`
  19. Port int `json:"port"`
  20. }
  21. //定义常量,工厂号
  22. const PlantNr = 100
  23. //mongoDb数据库名称
  24. const DbName = "logDb"
  25. var (
  26. G_DbEngine *xorm.Engine
  27. G_SqlDbRawEngine *sql.DB
  28. mgoDb *mongo.Client
  29. mlock sync.Mutex
  30. )
  31. // 获取MSSQL原生连接
  32. func InitMssqlRawDb(connString string) (err error) {
  33. if G_SqlDbRawEngine, err = sql.Open("sqlserver", connString); err != nil {
  34. log.Printf("数据库引擎无法创建: %s, 错误原因: %v", connString, err)
  35. return
  36. }
  37. return
  38. }
  39. // 获取MSSQL的XORM连接
  40. func InitMssqlDb(connString string) (err error) {
  41. if G_DbEngine, err = xorm.NewEngine("mssql", connString); err != nil {
  42. log.Println("数据库引擎无法创建: ", err.Error())
  43. return
  44. }
  45. G_DbEngine.SetMaxIdleConns(100)
  46. G_DbEngine.SetMaxOpenConns(100)
  47. if err = G_DbEngine.Ping(); err != nil {
  48. log.Println("数据库连接失败:", connString, err.Error())
  49. return
  50. } else {
  51. log.Println("数据库连接成功:", connString)
  52. }
  53. //开启debug
  54. //G_DbEngine.ShowSQL(true)
  55. return
  56. }
  57. //创建mongoDb数据库链接
  58. func MgoDb() *mongo.Client {
  59. //判断mgoDb是否存在
  60. if mgoDb != nil {
  61. return mgoDb
  62. }
  63. //创建之前会涉及并发,所以要加锁
  64. mlock.Lock()
  65. defer mlock.Unlock()
  66. //细节,防止多个请求锁住
  67. if mgoDb != nil {
  68. return mgoDb
  69. }
  70. //1.建立链接
  71. ctx, _ := context.WithTimeout(context.Background(), 10*time.Second)
  72. client, err := mongo.Connect(ctx, options.Client().ApplyURI("mongodb://localhost:27017"))
  73. if err != nil {
  74. glog.Infoln("初始化数据库", "MgoDb return fail", err)
  75. return nil
  76. } else {
  77. mgoDb = client
  78. return mgoDb
  79. }
  80. }