/* * @Author: giaogiao giaogiao * @Date: 2023-08-29 17:06:12 * @LastEditors: giaogiao giaogiao * @LastEditTime: 2023-09-01 10:17:53 * @FilePath: \gomysql\main.go * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE */ package main import ( "encoding/json" "fmt" "gomysql/models" "strconv" "strings" _ "github.com/go-sql-driver/mysql" "xorm.io/xorm" ) var engine *xorm.Engine func getInputByFmt() string { //定义变量 var str string //Scanf函数读取输入到变量中 两个返回值 //分别为读取到的长度 失败信息 _, err := fmt.Scanf("%s", &str) //注意使用%s读取输入字符串只能读取到空白符之前 if err != nil { return err.Error() } // fmt.Println("Read length is ", length) return str } /* *修改根据id */ func chang(id string) { getInputByFmt() type DataJson []struct { Detailid string `json:"detailid"` Name string `json:"name"` Applied int `json:"applied"` Actual int `json:"actual"` } var err error engine, err = xorm.NewEngine("mysql", "root:daobang123@tcp(10.34.8.97:3306)/wentiju2?charset=utf8") if err != nil { fmt.Println(err) return } if err := engine.Ping(); err != nil { fmt.Println(err, "数据库连接失败!") return } defer engine.Close() // fmt.Println("数据库连接成功!") data := new(models.DbNkExpense) has, err := engine.Where("id=?", id).Get(data) if err != nil { println(err) return } if !strings.Contains(data.Sano, "CLFYBX") { println("不属于差旅报销 自动退出") return } if has { print("标题:" + data.Title + "编号:" + data.Sano + "请确定标题和编号是否正正确 y/n :") inpout := getInputByFmt() if inpout != "Y" && inpout != "y" { return } } else { println("没有这行数据") return } data.Detailid = "73AA5010-6A8F-680E-DA8A-CE295EF26A02" // data.Detailid datajson := new(DataJson) err = json.Unmarshal([]byte(data.Details), &datajson) if err != nil { fmt.Println("error: ", err) return } for i, _ := range *datajson { sText := "人员经费" textQuoted := strconv.QuoteToASCII(sText) textUnquoted := textQuoted[1 : len(textQuoted)-1] (*datajson)[i].Name = textUnquoted (*datajson)[i].Detailid = "73AA5010-6A8F-680E-DA8A-CE295EF26A02" } jsonBytes, err := json.Marshal(*datajson) if err != nil { println(err) } data.Details = string(jsonBytes) affected, err := engine.ID(id).Update(data) if err != nil { println(err) } fmt.Printf("修改了%d行\n", affected) } func main() { print("请输入需要修改的id:") chang(getInputByFmt()) }