go中如何拼接sql语句并json格式返回

277 阅读1分钟
package main  
  
import (  
"database/sql"  
"encoding/json"  
"fmt"  
_ "github.com/go-sql-driver/mysql"  
)  
  
func main() {  
// 连接到MySQL数据库  
db, err := sql.Open("mysql", "root:@tcp(127.0.0.1:3306)/test4")  
if err != nil {  
panic(err.Error())  
}  
defer db.Close()  
  
// 定义变量  
name := 1231321  
  
// 拼接SQL语句  
sql := fmt.Sprintf("SELECT * FROM users WHERE name = %v", name)  
  
// 执行SQL查询  
rows, err := db.Query(sql)  
if err != nil {  
panic(err.Error())  
}  
defer rows.Close()  
  
// 定义一个切片,用于存储查询结果  
var data []map[string]interface{}  
// 遍历查询结果  
for rows.Next() {  
var name string  
var number string  
err = rows.Scan(&name, &number)  
if err != nil {  
panic(err.Error())  
}  
// 定义一个map,用于存储每一行的数据  
row := make(map[string]interface{})  
row["name"] = name  
row["number"] = number  
  
fmt.Println(name, number)  
// 将map存储到切片中  
data = append(data, row)  
}  
  
// 将切片转换为JSON格式  
jsonData, err := json.Marshal(data)  
if err != nil {  
panic(err.Error())  
}  
fmt.Println("我是切片格式", data)  
// 输出JSON格式数据  
fmt.Println("我是json格式", string(jsonData))  
}

效果

image.png