gpt4 book ai didi

json - Go 中的函数对数据库执行选择查询并返回 json 输出

转载 作者:IT王子 更新时间:2023-10-29 01:47:33 24 4
gpt4 key购买 nike

我正在用 Go 编写一个函数来对数据库执行选择查询。

输入 字符串,例如“从某个表中选择 id、姓名、年龄”此查询每次都会更改。

输出: json 格式的选择查询输出。

示例预期输出: {"Data":[{"id":1,"name":"abc", "age":40},{"id":2,"姓名":"xyz", "年龄":45}]}

示例实际输出: {"Data":[[1,"abc",40],[2,"xyz",45]]}

而不是 column_name:value,我只得到值。如何获得预期的输出?

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
}

最佳答案

得到解决方案。这是我所做的。

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)
}

//Created a map to handle the issue
var m map[string]interface{}
m = make(map[string]interface{})
for i := range columns {
m[columns[i]] = values[i]
}
v.Data = append(v.Data, m)
}
jsonMsg, err := json.Marshal(v)
return jsonMsg
}

如果有更好的解决方案,请告诉我。

关于json - Go 中的函数对数据库执行选择查询并返回 json 输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43367505/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com