我正在編寫一個函數來執行對數據庫的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
}