上次用 Nodejs 连接的 mssql ,这里再用 Go 实现一下。使用 Gin 框架 + gorm 来实现,其中 gorm 仅使用了原生 sql 查询功能,模型绑定功能见其官方文档。
前情回顾见如下文章:
这里直接上 golang 的代码,以供参考:
package main
import (
"fmt"
"github.com/gin-gonic/gin"
"github.com/jinzhu/gorm"
// _ "github.com/jinzhu/gorm/dialects/mysql"
_ "github.com/jinzhu/gorm/dialects/mssql"
)
func main() {
r := gin.Default()
r.GET("/ping", func(c *gin.Context) {
c.JSON(200, gin.H{
"message": "pong",
})
})
r.GET("/get_something", func(c *gin.Context) {
inParams := c.Query("params")
sql := ""
sql = "SELECT name FROM SomeTable WHERE SomeField = " + inParams
if sql == "" {
return
}
fmt.Println(sql)
// 连接数据库
db, err := gorm.Open("mssql", "server=localhost;user id=sa;password=your_password;port=1433;database=YOUR_DBNAME")
if err != nil {
fmt.Println(err)
return
}
// 定义结构体
type Result struct {
Name string
}
var result Result
rows, err := db.Raw(sql).Rows() // (*sql.Rows, error)
if err != nil {
fmt.Println(err)
return
}
defer rows.Close()
for rows.Next() {
if err := rows.Scan(&result.Name); err != nil {
fmt.Println("Scan.Error:")
fmt.Println(err.Error())
return
}
fmt.Println("result:")
fmt.Println(result)
}
c.JSON(200, gin.H{
"message": result.Name,
})
})
// http.ListenAndServe(":2000", r)
r.Run() // listen and serve on 0.0.0.0:8080
}
交叉编译,见下文: