go的main腳本
package main
import (
"database/sql"
"fmt"
"html/template"
"net/http"
_ "github.com/go-sql-driver/mysql"
)
type Employee struct {
Fname, Sname, Dname, Email string
}
func dbConnect() (db *sql.DB) {
dbDriver := "mysql"
dbuser := "root"
dbPass := "123456"
dbHost := "172.20.4.92"
dbPort := "3306"
dbName := "goinfo"
db, err := sql.Open(dbDriver, dbuser+":"+dbPass+"@tcp("+dbHost+":"+dbPort+")/"+dbName+"?charset=utf8")
//db,err := sql.Open(dbDriver, dbUser +":"+ dbPass +"@tcp("+ dbHost +":"+ dbPort +")/"+ dbName +"?charset=utf8")
checkErr(err)
return db
}
func dbSelect() []Employee {
db := dbConnect()
rows, err := db.Query("select first_name,last_name,department,email from employees")
checkErr(err)
emp := Employee{}
empdict := []Employee{}
for rows.Next() {
var first_name, last_name, department, email string
err := rows.Scan(&first_name, &last_name, &department, &email)
checkErr(err)
emp.Fname = first_name
emp.Sname = last_name
emp.Dname = department
emp.Email = email
empdict = append(empdict, emp)
}
defer db.Close()
return empdict
}
func checkErr(err error) {
if err != nil {
panic(err)
}
}
func dbTable(w http.ResponseWriter, r *http.Request) {
table := dbSelect()
for i := range table {
tmp := table[i]
fmt.Fprintf(w, "YESS|%12s|%12s|%12s|%20s|\n", tmp.Fname, tmp.Sname, tmp.Dname, tmp.Email)
}
}
func dbTableHtml(w http.ResponseWriter, r *http.Request) {
Tables := dbSelect()
tmpl := template.Must(template.ParseFiles("list.html"))
//tmpl.ExecuteTemplate(w, "Index", struct {
// Tasks []Employee
//}{Tables})
tmpl.ExecuteTemplate(w, "Index", Tables)
}
func main() {
server := http.Server{
Addr: ":8080",
}
http.HandleFunc("/test", dbTable)
http.HandleFunc("/list", dbTableHtml)
server.ListenAndServe()
}
list.html
{{ define "Index" }}
<html>
<head>
<meta content="html/text" charset="utf-8">
<title> Check LIST </title>
</head>
<body>
<h1> Mysql tables list </h1>
<table border="1">
<tr>
<td>FirstName</td>
<td>SecondName</td>
<td>Department</td>
<td>Email</td>
</tr>
{{ range . }}
<tr>
<td> {{ .Fname }}</td>
<td> {{ .Sname }}</td>
<td> {{ .Dname }}</td>
<td> {{ .Email }}</td>
</tr>
{{ end }}
</table>
</body>
</html>
{{ end }}