/*
go-sqlite3 is cgo package.
If you want to build your app using go-sqlite3, you need gcc. However,
after you have built and installed go-sqlite3 with go install github.com/mattn/go-sqlite3 (which requires gcc),
you can build your app without relying on gcc in future.
Important: because this is a CGO enabled package,
you are required to set the environment variable CGO_ENABLED=1 and have a gcc compile present within your path.
*/
package main
import (
"database/sql"
"fmt"
"io"
"log"
"net/http"
_ "github.com/mattn/go-sqlite3"
)
var databasePath = "./data.db3"
type SoInfo struct {
id int
build_id int
branch string
resversion string
currenttime string
}
func checkError(err error) {
if err != nil {
log.Fatal(err)
}
}
func handler(w http.ResponseWriter, r *http.Request) {
r.ParseForm()
if len(r.Form) > 0 {
job_name := r.Form.Get("job_name")
if len(job_name) != 0 {
db, err := sql.Open("sqlite3", databasePath)
checkError(err)
defer db.Close()
sql := fmt.Sprintf("select id,build_id,branch,resversion,currenttime from so_records where job_name='%s' order by cast(build_id as '999999') desc limit 20", job_name)
rows, err := db.Query(sql)
checkError(err)
defer rows.Close()
for rows.Next() {
var line SoInfo
rows.Scan(&line.id, &line.build_id, &line.branch, &line.resversion, &line.currenttime)
stringLine := fmt.Sprintf("BuildID: %d | BRANCH: %s | RESVERSION:%s | Time: %s | ID: %d\n", line.build_id, line.branch, line.resversion, line.currenttime, line.id)
io.WriteString(w, stringLine)
}
}
}
}
func main() {
http.HandleFunc("/findso", handler)
err := http.ListenAndServe(":8080", nil)
if err != nil {
log.Fatal("ListenAndServe: ", err)
}
}
go 简单读取数据库
最新推荐文章于 2024-05-10 10:22:36 发布