package main
import (
"database/sql"
"log"
"net/http"
_ "github.com/go-sql-driver/mysql"
"github.com/labstack/echo"
)
type User struct {
Name string
Id string
}
func main() {
db, err := sql.Open("mysql",
"nobu2:1234@tcp(127.0.0.1:3306)/ordering")
if err != nil {
log.Fatal(err)
}
defer db.Close() // 関数がリターンする直前に呼び出される
rows, err := db.Query("SELECT * FROM test1") //
if err != nil {
panic(err.Error())
}
columns, err := rows.Columns() // カラム名を取得
if err != nil {
panic(err.Error())
}
values := make([]sql.RawBytes, len(columns))
// rows.Scan は引数に `[]interface{}`が必要.
scanArgs := make([]interface{}, len(values))
for i := range values {
scanArgs[i] = &values[i]
}
u := User{}
ulist := []User{}
val := ""
for rows.Next() {
err = rows.Scan(scanArgs...)
if err != nil {
panic(err.Error())
}
for i, col := range values {
// Here we can check if the value is nil (NULL value)
if col == nil {
val = "NULL"
} else {
val = string(col)
}
if columns[i] == "id" {
u.Id = val
} else if columns[i] == "name" {
u.Name = val
}
}
ulist = append(ulist, u)
}
result := ""
for i, p := range ulist {
result = result + string(i) + p.Id + ":" + p.Name
}
e := echo.New()
e.GET("/", func(c echo.Context) error {
return c.String(http.StatusOK, result)
})
e.GET("/api", func(c echo.Context) error {
return c.String(http.StatusOK, "hello world")
})
e.Logger.Fatal(e.Start(":1323"))
}