go+solidity+web写一个简单的水龙头项目3

本文已参与「新人创作礼」活动,一起开启掘金创作之路

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
  }

 }
复制代码

猜你喜欢

转载自juejin.im/post/7101353913076416519