Skip to content

Instantly share code, notes, and snippets.

@doshiraki
Last active August 31, 2021 22:54
Show Gist options
  • Select an option

  • Save doshiraki/c86e789fdc31d5ef0b96fd879b8f92bf to your computer and use it in GitHub Desktop.

Select an option

Save doshiraki/c86e789fdc31d5ef0b96fd879b8f92bf to your computer and use it in GitHub Desktop.
Go DB Access
package postgres
import (
"database/sql"
"fmt"
"log"
"time"
_ "github.com/lib/pq"
)
func SelectSql() {
var db *sql.DB
var rec *sql.Rows
var err error
url := fmt.Sprintf("postgres://%v:%v@%v:%v/%v?sslmode=disable",
"postgres",
"pass",
"172.17.0.1",
"5432",
"postgres")
db, err = sql.Open("postgres", url)
if err != nil {
log.Panicln("接続エラー")
}
defer db.Close()
rec, err = db.Query("select * from test_table")
if err != nil {
log.Println(err)
}
var argst []*sql.ColumnType
argst, _ = rec.ColumnTypes()
values := make([]interface{}, len(argst))
args := make([]interface{}, len(argst))
recval := make([]interface{}, 0, len(argst))
for i, v := range argst {
fmt.Println(v)
args[i] = interface{}(&values[i])
switch v.Name() {
case "id":
default:
recval = append(recval, &values[i])
}
}
for rec.Next() {
rec.Scan(args...)
for _, v := range recval {
value := *v.(*interface{})
if value != nil {
switch v := value.(type) {
case time.Time:
fmt.Println(v.Format("20060102"))
default:
fmt.Println(value)
}
} else {
fmt.Println("NULL")
}
}
}
}
func InsertSql() {
}
func UpdateSql() {
}
func DeleteSql() {
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment