go_use_mysql/main.go

114 lines
2.6 KiB
Go

/*
* @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())
}