gigibox
2023-06-20 4983adc4d20798a980025be4cd45c77558c74265
kingdee/query.go
@@ -1,8 +1,68 @@
package kingdee
import "fmt"
import (
   "encoding/json"
   "kingdee-dbapi/config"
   "kingdee-dbapi/logger"
   "kingdee-dbapi/nsqclient"
)
func QueryMsgHandle(data []byte) error {
   fmt.Println("recv msg ", string(data))
   var result []interface{}
   var sql = string(data)
   logger.Debug("接收到查询请求,%s", sql)
   if db == nil {
      logger.Debug("数据库未连接")
      return nil
   }
   rows, err := db.Raw(`select * from users`).Rows()
   if err != nil {
      result = append(result, err.Error())
      return err
   }
   var colums []string
   for rows.Next() {
      //先获取所有的column
      if colums == nil {
         colums, _ = rows.Columns()
      }
      //建立俩个interface数组,columnPointers中存在columns的地址
      columns := make([]interface{}, len(colums))
      columnPointers := make([]interface{}, len(colums))
      for i, _ := range columns {
         //赋值地址
         columnPointers[i] = &columns[i]
      }
      //扫描结果
      rows.Scan(columnPointers...)
      m := make(map[string]interface{})
      for i, colName := range colums {
         val := columnPointers[i].(*interface{})
         m[colName] = *val
      }
      result = append(result, m)
      //result = append(result, row)
   }
   logger.Debug("数据库返回数据%+v", result)
   b, _ := json.Marshal(result)
   ok := nsqclient.Produce(config.Options.ReplyTopic, b)
   if !ok {
      logger.Warn("应答查询请求失败.")
   } else {
      logger.Debug("应答查询请求成功. 数据:%s", string(b))
   }
   return nil
}