本文已参与「新人创作礼」活动,一起开启掘金创作之路
1、数据库的增删改查
1、查询所有申请过水龙头的账户数据
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、插入数据
当有账户申请水龙头的时候,插入数据
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文件只需要调用他们就足够了
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
}
}
复制代码