".
import (
"database/sql"
"fmt"
"net/http"
)
func Handler(w http.ResponseWriter, r *http.Request) {
db, dbErr := sql.Open("mysql", "myapp@cloudsql(myproject:myinstance)/mydb")
if dbErr != nil {
fmt.Fprintf(w, "open err\n")
http.Error(w, dbErr.Error(), 500)
return
}
defer db.Close()
// Open doesn't open a connection. Validate DSN data:
pingErr := db.Ping()
if pingErr != nil {
fmt.Fprintf(w, "ping err\n")
http.Error(w, pingErr.Error(), 500)
return
}
fmt.Fprint(w, "db test ok!\n")
rows, rowErr := db.Query("SELECT iduserInfo, userName FROM userInfo")
if rowErr != nil {
fmt.Fprintf(w, "Query err\n")
http.Error(w, rowErr.Error(), 500)
return
}
defer rows.Close()
for rows.Next() {
var (
userID int
userName string
)
if err := rows.Scan(&userID, &userName); err != nil {
http.Error(w, err.Error(), 500)
}
fmt.Fprintf(w, "%d is %s\n", userID, userName)
}
if err := rows.Err(); err != nil {
http.Error(w, err.Error(), 500)
}
}
Julien Schmidt於 2013年10月27日星期日UTC+8上午2時24分38秒寫道: