我正在编写一个函数来执行对数据库的select查询。函数Go执行数据库选择查询并返回json输出
输入:字符串例如“Select some id,name,age from sometable” 此查询每次更改。
输出:以json格式输出选择查询。
示例预期输出: {“Data”:[{“id”:1,“name”:“abc”,“age”:40},{“id”:2,“name” XYZ”, “年龄”:45}]}
样品的实际输出: { “数据”:[[1, “ABC”,40],[2, “XYZ”,45]]}
而不是ie列名:值,我只得到值。 如何获得预期的输出?
func executeSQL(queryStr string) []byte {
connString := createConnectString()
conn, err := sql.Open("mssql", connString)
if err != nil {
log.Fatal("Error while opening database connection:", err.Error())
}
defer conn.Close()
rows, err := conn.Query(queryStr)
if err != nil {
log.Fatal("Query failed:", err.Error())
}
defer rows.Close()
columns, _ := rows.Columns()
count := len(columns)
var v struct {
Data []interface{} // `json:"data"`
}
for rows.Next() {
values := make([]interface{}, count)
valuePtrs := make([]interface{}, count)
for i, _ := range columns {
valuePtrs[i] = &values[i]
}
if err := rows.Scan(valuePtrs...); err != nil {
log.Fatal(err)
}
v.Data = append(v.Data, values)
}
jsonMsg, err := json.Marshal(v)
return jsonMsg
}