本文已参与「新人创作礼」活动,一起开启掘金创作之路
1、数据库的增删改查
1、查询所有申请过水龙头的账户数据
go func ListAcc() (facuetst []FAUCET, err error) { var sqlStr = `SELECT * FROM faucet ` // 查询数据 rows, err := db.Query(sqlStr) if err != nil { return nil, err } // 按行读取数据到结构体成员中 for rows.Next() { faucetStr := FAUCET{} err = rows.Scan(&faucetStr.ID, &faucetStr.Account, &faucetStr.Timenow) if err != nil { return nil, err } facuetst = append(facuetst, faucetStr) } return }
2、插入数据
当有账户申请水龙头的时候,插入数据 ```go func InsertFaucet(account string) (err error) {
nowTime := time.Now() var sqlStr = INSERT INTO faucet(account,timeNow) VALUES (?,?)
fmt.Println("插入数据") _, err = db.Exec(sqlStr, account, nowTime) if err != nil { fmt.Println("连接失败",err) return err } fmt.Println("插入数据成功") return nil } ```
更新
当账户申请了水龙头并转账后,eth发行总量就会增加
``` func UpdataETH() (err error) {
var sqlStr = UPDATE statistics set ETHAmount=ETHAmount+3.7886 where id=1
fmt.Println("更新数据") _, err = db.Exec(sqlStr) if err != nil { fmt.Println("连接失败",err) return err } fmt.Println("更新数据成功") return nil } ``` 其他操作数据库的代码都差不多,就不一一展示了
配置文件
//为main.go文件不显得冗余,配置配置文件可以为以后迭代,更改数据库、http地址等更加的方便,不用在几千行甚至上万行的代码中找一个路径。 cfg.json : { "host": "127.0.0.1", "port": "3333", "dbfile": "faucet.sql", "web": "C:\Users\袁硕\Desktop\static" }
config.go : ``` package cfg
import ( "encoding/json" "fmt" "io/ioutil" )
// 定义配置信息结构体,从配置文件读入 type Config struct { Host string json:"host"
// 监听的http地址 Port string json:"port"
// 监听的http端口 DbFile string json:"dbfile"
// mysql数据库文件 WebDir string json:"web"
// web静态文件所在的目录 }
// 读入配置文件 func LoadConfig(file string) (c *Config, err error) { // 将文件读到内存中,为一个切片类型 data, err := ioutil.ReadFile(file) if err != nil { return nil, err }
// json解析切片数据,反序列化到结构体中 c = &Config{} err = json.Unmarshal(data, c) fmt.Println(*c, err) return c, err } ```
main.go调用
main.go文件只需要调用他们就足够了 ```go package main
import ( "awesomeProject/cfg" "awesomeProject/db" "awesomeProject/logic" "fmt" ) func main(){ //数据库初始化 db.Init()
//读取配置文件 c, err := cfg.LoadConfig("cfg.json") if err != nil { fmt.Printf("载入配置文件错误:%v\n", err) return } fmt.Println(*c)
//启动配置文件 err = logic.Start(fmt.Sprintf("%s:%s", c.Host, c.Port), c.WebDir)
if err != nil { fmt.Printf("web服务错误:%v\n", err) return }
} ```